我尝试将一个命令行输出转换为(或存储为)变量。 命令是
ps -U root u | grep ruby | wc -l
输出为1,但是当我使用
时
$(ps -U root u | grep ruby | wc -l)
输出
1: command not found
答案 0 :(得分:2)
下面,
$(ps -U root u | grep ruby | wc -l)
您没有将输出保存到变量中。因此shell尝试执行结果(在您的情况下恰好是1
)。由于找不到名为1
的命令/函数,因此会出现错误。
你可能想要:
output=$(ps -U root u | grep ruby | wc -l)
现在,output
将1
可以打印:
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`