linux的shell编程中如何将一段命令的结果封装成一个变量?

比如我创建一个test.sh文件文件中有一段是dmesg|grepeth我如何将这段命令的结果封装成一个变量变量名自拟... 比如我创建一个test.sh文件
文件中有一段是dmesg | grep eth 我如何将这段命令的结果封装成一个变量
变量名自拟
展开
 我来答
百度网友5311d79
推荐于2017-09-25 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3212万
展开全部

直接赋值给变量就可以了啊,变量可以保存多行字符串内容的。使用变量的时候记得将其放在双引号里就行了。

var=`dmesg | grep eth`
echo "$var"

一对反引号(ESC下面的键),表示优先执行其中的命令,执行完成后将结果赋值给var变量。

字符串变量使用的时候加双引号,作为一个整体看待。

reedyan
2014-01-20 · TA获得超过460个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:192万
展开全部
[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

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
videlord
2014-01-21 · TA获得超过1336个赞
知道大有可为答主
回答量:1518
采纳率:66%
帮助的人:436万
展开全部

至少有两种方式:

  1.  命令放在``中 (一般键盘1左边那个键),如

    echo `dmesg | grep eth`

  2. 命令放在$()中,如

    echo $(dmesg | grep eth)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangna20120502
2014-01-20 · 超过29用户采纳过TA的回答
知道答主
回答量:170
采纳率:0%
帮助的人:68.2万
展开全部
可以如下保存到变量varname中
varname=`dmesg | grep eth`
如果返回的是多行,可以保存到数组中
array=($(dmesg | grep eth))
然后用for循环获取数组中各个值
len=${#array[@]}
for((i=0; i<$len; i++))
do
oneline=${array[$i]}
done
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du瓶邪
推荐于2017-09-08 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2931万
展开全部
var=`ls -l *.* | wc -l`

var=$(ls -l *.* | wc -l)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式