所谓命令替换,是把命令执行后的标准输出放入变量中。这是一个十分有威力的功能。例如说,
想查看工作目录中所有的文件名,可执行ls命令,但如何把这些文件名存入变量中,供往后的程序代码再利用呢?
使用命令替换,轻轻松松就可以做到这点。在Script设计中,运用这项功能的比重相当高。
命令替换的语法有以下两种:
- 新式写法:变量名称=$(命令) #强烈建议采用新式的写法
- 旧式写法:变量名称=`命令`
注意,上式是使用一对“`”(在键盘的左上角)符号含括住命令,而不是用单引号!
Bash会把执行命令后产生的标准输出,赋值给指定的变量。在这个过程中,默认会自动删除换行字符。例如:
DIRS=$(ls)
DIRS的变量值,即含有工作目录中所有文件的名称列表。
取得命令替换的值后,可把它放在for循环中,一一加以处理,如以下程序区块:
DIRS=$(ls) for f in $DIRS do echo $f done
命令替换中,可以包含两个或两个以上的指令,如以下范例,可取得上层目录名称:
PDIR=$(cd ..; pwd)
这里有两道指令:cd .. 和 pwd,中间用;隔开,命令替换的值是最后一道指令执行的结果。
在命令替换里,也可以再包含其他命令替换。例如:
r=$(du -s $(pwd)) # 取得工作目录磁盘用量的总和