Ubuntu Shell脚本问题:将命令输出转换为变量

时间:2015-12-15 14:59:25

标签: linux bash shell

我尝试将一个命令行输出转换为(或存储为)变量。 命令是

  

ps -U root u | grep ruby | wc -l

输出为1,但是当我使用

  

$(ps -U root u | grep ruby | wc -l)

输出

  

1: command not found

这里发生了什么? 这是我的快照 enter image description here

enter image description here

3 个答案:

答案 0 :(得分:2)

下面,

$(ps -U root u | grep ruby | wc -l)

您没有将输出保存到变量中。因此shell尝试执行结果(在您的情况下恰好是1)。由于找不到名为1的命令/函数,因此会出现错误。

你可能想要:

output=$(ps -U root u | grep ruby | wc -l)

现在,output1可以打印:

echo "${output}"

顺便说一下,grep可以使用-c选项计算自己。因此,此处不需要wc

output=$(ps -U root u | grep -c ruby)
echo "${output}"

答案 1 :(得分:1)

在后一种情况下,评估$(…)内的命令,然后使用结果创建 new 命令,然后shell尝试执行该命令。由于没有名为1的命令或程序,因此您会收到所看到的消息。如果编写 echo结果:$(ps -U root u | grep ruby​​ | wc -l),则更容易看到发生了什么。您的输出将是Result: 1

答案 2 :(得分:1)

要使用backtics

分配给变量,请执行此操作
a=`ps -U root u | grep ruby | wc -l`