zoukankan      html  css  js  c++  java
  • bash命令的使用

    bash的工作特性之命令执行状态返回值和命令展开所涉及的内容及其示例演出

    !脚本执行与调试
    1、绝对路径执行,要求文件有执行权限
    2、以sh命令执行,不要求文件有执行权限
    3、.加空格或source命令执行,脚本将在当前shell中执行
    4、检查脚本语法
    bash -v test.sh
    5、跟踪脚本执行
    bash -x test.sh

    !环境脚本执行规则
    用户登录:/etc/profile、/.bash_profile、/.bash_login、~/.profile
    用户注销:~/.bash_logout
    执行新shell: /etc/bash.bashrc、~/.bashrc
    执行script(使用#!/bin/bash):如指定BASH_ENV的值,则执行其指定的启动文件
    执行script(使用#!/bin/sh):不调用任何环境脚本

    !基本语法
    1、脚本程序以#!/bin/bash 开始。以告之系统脚本以何种shell执行。
    2、以#开头的行被视为注解,执行时自动忽略。
    3、每行不得多于255个字节,可在行末加上反斜杠的方式拆分单行内容到多行中。
    例如:
    test1=abcdefg
    hij
    klmnopq
    rstuvwxyz
    4、多命令以分号分隔时,命令从左至右依次执行。
    例如: whoami;w
    5、多命令以&&分隔时,命令从左至右按前面命令执行成功后再执行下个命令的原则依次执行。
    例如:make && make install
    6、多命令以||分隔时,命令从左至右按前面命令执行失败后再执行下个命令的原则依次执行。
    7、多个命令以分号分隔放置()中,则会启用子shell并执行。
    例如:(mkdir testdir;cd testdir;touch testfile)
    8、多个命令以分号分隔放置{}中,则会在当前shell中执行。需要注意的是命令和{}必须有空格间隔,并且最后一条命令也必须加分号。
    例如:{ mkdir testdir;cd testdir;touch testfile; }
    9、被反引号`括起来的命令或$(命令),shell将直接引用执行结果。
    例如:
    test=date
    test=$(date)
    10、可以将算术运算式以$[ 算术运算式 ]的形式进行求值。注意算术运算式和[]必须有空格分隔,此方法只支持整型运算。
    例如:test=$[ 32 * 17 ]
    11、使用$((运算式))的形式也可以进行算术运算求值,并且可以进行布尔运算。
    例如:test=$(( 32 * 17 ))
    12、使用let 运算式也能进行算术运算,算术式各元素间不得有空格,否则应将算术式用引号括起来。
    例如:let ++test
    13、任何命令执行后均会返回一个取值范围在0~255之间的整型返回码。主要值含义如下:
    0:正常结束
    1:通用执行错误
    2:误用shell命令
    126:命令不可执行
    127:命令未找到
    128:无效退出参数
    130:被ctrl-c强行中止
    255:退出状态码越界
    shell script默认返回最后一条命令的返回码。可以使用exit退出script执行并返回指定的返回码。
    例如:exit 15
    通过$?这个系统变量可以获取上一条命令的返回码。
    例如:
    sync
    echo $?
    14、通过getopts命令获取命令行选项。
    语法为:getopts 选项行 选项变量。
    选项行由各选项的单一字符组成,如某选项字符需要参数,则在选项字符后加冒号。调用时此选项后无参数的话系统会提示错误,如不希望出现提示则应在选项行最前面加上冒号。系统会将参数存入OPTARG变量。
    例如:
    #!/bin/bash
    while getopts :a:bc opt
    do
    case $opt in
    a)
    echo "选项a,后跟参数:$OPTARG";;
    b)
    echo "选项b";;
    c)
    echo "选项c";;
    *)
    ;;
    esac
    done
    15、利用mktemp建立临时文件
    语法为:mktemp 选项 临时文件模板
    如果建立成功返回0。
    临时文件模板格式形式如:/tmp/test.XXXXXX或/usr/ttt/tttt.XXXXXX,文件名末6个字符必须为XXXXXX.生成成功后会由系统代替为随机6个字符。
    选项-q 不产生错误信息。
    选项-p 指定建立临时文件的父级目录,父级目录必须已存在。例如:mktemp -p /usr/tmp tf.XXXXXX
    选项-t 按环境变量TMPDIR变量中指定的父级目录建立临时文件,如变量未定义,则父级目录为/tmp
    选项-d 建立的是临时目录。
    直接执行mktemp,会在/tmp目录下建立tmp.XXXXXX形式的临时文件,文件名末6个字符为随机字符。可使用下面方式获取生成的文件名。
    tmpfile=$(mktemp)

  • 相关阅读:
    ORM和JDBC
    四种会话跟踪技术以及jstl介绍
    GC、进程和线程的定义
    数组和链表的理解,及各自的优缺点
    JSP和Servlet及浏览器与tomcat交互过程
    多线程、同步实现方法及Error和Exception的区别与联系
    Eclipse创建一个普通maven项目详细步骤
    Eclipse创建一个动态maven项目详细步骤
    Myeclipse项目出现红叉解决方案
    数据结构和算法 — 平衡二叉树的实现
  • 原文地址:https://www.cnblogs.com/ZhengLiming/p/5906365.html
Copyright © 2011-2022 走看看