命令替换 与 数学扩展

命令替
    需要把命令的赋值给一个量或者需要用字符串替换变量的,我可以使用量替。在Shell中,通常使用反引号的方法行命令替
    /> d=`date`                           #date命令的赋值给d量。
    /> echo $d
    Fri Nov 18 16:35:28 CST 2011
    /> pwd
    /home/stephen
    /> echo `basename \`pwd\``  #基于反引号的命令替换是可嵌入的,但是嵌入命令的反引号需要使用反斜杠转义。
    stephen
    除了反引号可以用于命令替换,这里我们也可以使用$(command)形式用于命令替换。
    /> d=$(date)
    /> echo $d
    Fri Nov 18 16:42:33 CST 2011
    /> dirname="$(basename $(pwd))"     #和之前的反引号一样,该方式也支持嵌套。
    /> echo $dirname
    stephen

 【数学扩展
    Shell中提供了两种计算数学表达式的格式:$[ expression ]和$(( expression ))。
    /> echo $[5+4-2]
    7
    /> echo $[5+2*3]
    11
    /> echo $((5+4-2))
    7
    /> echo $((5+2*3))
    11    
    事实上,我们也可以在Shell中声明数值型的变量,这需要在declare命令的后面添加-i选项,如:
    /> declare -i num
    /> num=5+5      #注意在赋值的过程中,所有的符号之间均没有空格,如果需要空格,需要在表达式的外面加双引号
    /> echo $num    #如果没有声明declare -i num,该命令将返回5+5
    10
    /> num="5 * 5"
    /> echo $num
    25
    /> declare strnum
    /> strnum=5+5
    /> echo $strnum #由于并未将strnum声明为数值型,因此该输出将按字符串方式处理。
    5+5
    Shell以不同制的方式示数量的果,其格式+#+量。
    /> declare -i x=017 #017其格式为八进制格式
    /> echo $x           #缺省是十进制
    15
    /> x=2#101         #二进制
    /> echo $x
    5
    /> x=8#17           #八进制
    /> echo $x
    15
    /> x=16#b           #十六进制
    /> echo $x
    11
    在Shell中还提供了一个内置命令let,专门用于计算数学运算的,见如下示例:
    /> let i=5
    /> let i=i+1
    /> echo $i
    6
    /> let "i = i + 2"
    /> echo $i
    8
    /> let "i+=1"
    /> echo $i
    9   

posted @ 2019-03-13 14:29  山的那一边  阅读(152)  评论(0)    收藏  举报