Zsh / Shell - 如何安静地为变量赋值?

时间:2013-06-06 17:00:47

标签: bash shell unix zsh ksh

我无法安静地将值(无控制台输出)分配给变量。

我想将npm list -g分配给变量,但没有任何控制台输出,所以我这样做了:

npm_list=$(npm list -g &> /dev/null)

但是当我这样做时$npm_list没有输出任何内容(我想因为我将npm的输出返回到/ dev / null)。

是的......,我怎么办呢?我对shell编程很陌生。

提前致谢!

3 个答案:

答案 0 :(得分:4)

使用Git bash shell(抱歉,我现在在Windows上,所以没有Zsh可用),这对我有用

npm_list=$(npm list -g 2> /dev/null)

答案 1 :(得分:3)

是的,您要将命令的所有输出发送到/dev/null,以便$()无法正确捕获输出。

你想要的只是:

npm_list=$(npm list 2>/dev/null)

虽然你可能想要一些你可以处理的东西,但是:

npm_list=$(npm list --parseable 2>/dev/null | tail -n +2)

答案 2 :(得分:2)

npm_list=$(npm list -g) &> /dev/null

这似乎可以解决问题:)

我仍然不知道&>中的&符号究竟意味着什么。

当我现在回复$npm_list时,它包含所有npm包。