美文网首页
chapter 11. 构建基本脚本

chapter 11. 构建基本脚本

作者: 是阿离 | 来源:发表于2017-12-25 00:22 被阅读0次

    创建shell脚本

    • shell脚本第一行为指定具体shell来运行该脚本,可以指定shell(待验证)

    echo

    • 使用echo输出时,可以使用-n参数来不进行换行,例如

        echo "Today is :"
        date
      

    环境变量

    • 可以使用set命令查看全部环境变量
    • 可以使用$查看具体环境变量,通过echo $evnName,如果要使用echo输出$符号,可以使用转义符echo \$通常可以使用${varName}来代替$varName,多增加的两个花括号用来帮助识别后面的变量名

    用户变量

    • 用户变量长度最大为20个字符
    • 能够区分大小写
    • 变量赋值时不能在=与变量中间存在空格,即varA="var a"
    • 命令替换,即将命令输出赋值给变量(是执行完后将结果赋值给变量),通常可用:
      • `反引号
      • $() 格式

    输入、输出重定向

    • 输出重定向分为:>覆盖写;>>追加写

    • 输入重定向分为:<从文件读取;<<内联输入重定向

    • 内联输入重定向需要指定文本标记(marker)来确定开始与结束, marker可以任意指定,习惯性使用EOF:

        ./test.sh << marker
        ...
        marker
      

    管道—— |

    ls -lrt | wc -l
    
    • 通过管道将输出传给后面的命令,不会用到任何中间文件与缓冲区

    数学运算

    expr命令

    varTest=$(expr $var1 / $var2)
    
    • 能够识别少量的数字和字符串操作符,包括:

        ARG1 | ARG2 如果ARG1既不是null也不是零值,返回ARG1,否则返回ARG2
        ARG1 & ARG2 如果没有参数是null或零值,返回ARG1,否则返回0
        加、减、乘、除、取余、比较
        模式匹配
        截取字符串
        查找字符
       ……
      
    • 对于*乘要转义为\*,否则会作为通配符处理

    • 运算结果赋值给变量要通过$()或者``

    数学运算符——方括号[]

    varTest=$[$var1 * $var2]
    
    • 只能进行整数运算
    • bash shell中使用$[]可以进行数学运算并将结果赋值给变量

    浮点数运算——bc

    scale=4
    bc 12.73 / 16
    
    • 浮点运算精确度由内建变量scale控制的,若未设定则无法得到期望结果
    • 在bash shell中使用:
      • 简单计算,使用管道+命令替换:

          varTest=$(echo "scale=4; 12.73 / 16" | bc)
        
      • 复杂计算,多个计算式,使用内联输入重定向:

          t1=12.73
          t2=16
          vartTest=$(bc << EOF
          scale=4
          var1=(12.1*2.1)
          var2=($t1 / $t2)
          var1 + var2
          E0F
          )
        

    退出脚本
    shell命令退出时会返回退出状态码(exit status),默认情况下,shell脚本会以脚本中最后一个命令的退出状态码退出

    • 查看退出状态码:$?
    • 成功结束状态码为0,有错误时状态为正数值,其中:
      • 无效命令(command not found)会返回的退出状态码为127
      • 用户没有执行命令的正确权限会返回126
      • 给某个命令提供了无效参数会返回1,1代表发生了一般性未知错误

    自定义退出状态码——exit
    由于退出状态码为[0, 255],自定义的退出状态码会进行模运算除以256取余,例如:

    exit 300
    

    通过$?得到的退出状态码为44

    参考文章

    Linux Command Line and Shell Scripting Bible
    该系列其他文章请查看:
    Linux命令行与shell脚本

    相关文章

      网友评论

          本文标题:chapter 11. 构建基本脚本

          本文链接:https://www.haomeiwen.com/subject/vgtkgxtx.html