${}、$()、$(())、$[]功能很丰富,当然也可以使用其他命令代替,但如果你喜欢了它,会发现原本几行的命令,让你一行或者几个字符解决,岂不美哉!

常用功能(后期慢慢完善!)

$(command) 等价于 `command`

$(())支持expr运算(注:expr 运算需要空格分割、且*乘法需要转义)

${}取值(注:以键盘$为分割,$左侧为#,右侧为%。请记忆!!!)

${}取字节,(注:冒号分割取字符串)

$[]代替let

$(command) 等价于 `command`

这个比较简单没事说的,用了就知道!

1
2
#获取主机ip
IP=`hostname -i awk '{print $2}'`

$(())支持expr运算

这个比单独使用expr方便很多,expr中*是需要转义的,当然,这里也不支持浮点,如果需要浮点还是awk方便很多

$[]与\$(())用途一致:用来作整数运算。在 bash 中,$(( ))的整数运算符号大致有这些: \+ - * / % & ^ ! AND、OR、XOR、NOT运算

${}

这个功能有点多!

字符串拼接

1
2
3
4
#在某些时候,如_和/是无法直接拼接的,这时候可以使用${}进行拼(单次拼接比使用比变量方便很多)
#如
VAR=/home/oracle
echo ${VAR}/db_1

取字节

取字节,这个偶尔会用到,过滤条件时用的较多。(awk配合substr也可以取字节)

做个范例:100到1000之间的水仙花数

1
2
3
4
5
6
7
8
9
10
11
12
13
for i in ` seq 100 1000`
do
#(默认0开头)第0位字节开始,取1个值
bai=${i:0:1}
#(默认0开头)第1位字节开始,取1个值
shi=${i:1:1}
#(默认0开头)第2位字节开始,取1个值
ge=${i:2:1}
VAR=$((ge*$ge*$ge+$shi*$shi*$shi+$bai*$bai*$bai))
if [ $VAR -eq $i ];then
echo "水仙花:$i"
fi
done

**注:$