命令替换 与 数学扩展
【命令替换】
同样我们需要把命令的输出结果赋值给一个变量或者需要用字符串替换变量的输出结果时,我们可以使用变量替换。在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

浙公网安备 33010602011771号