linux的shell编程中如何将一段命令的结果封装成一个变量?
文件中有一段是dmesg | grep eth 我如何将这段命令的结果封装成一个变量
变量名自拟 展开
[root@YYStorage2 ~]# cat test.sh
#!/bin/sh
dmesg|grep $1
[root@YYStorage2 ~]# chmod +x test.sh
[root@YYStorage2 ~]# ./test.sh eth
e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
eth0: no IPv6 routers present
ADDRCONF(NETDEV_UP): eth0: link is not ready
e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
eth0: no IPv6 routers present
e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
eth0: no IPv6 routers present
解释一下吧:在shell中的变量有$?,$1...$9
$1代表第一个变量,$2代表第二个,依次类推,一直到$9
至少有两种方式:
命令放在``中 (一般键盘1左边那个键),如
echo `dmesg | grep eth`
命令放在$()中,如
echo $(dmesg | grep eth)
varname=`dmesg | grep eth`
如果返回的是多行,可以保存到数组中
array=($(dmesg | grep eth))
然后用for循环获取数组中各个值
len=${#array[@]}
for((i=0; i<$len; i++))
do
oneline=${array[$i]}
done
var=$(ls -l *.* | wc -l)