繁体   English   中英

将shell命令的输出存储在变量中

[英]Store the output of shell command in a variable

我试图在安装时通过shell脚本安装zfs,但出现了一些错误,因此,要使其完全自动化,我想从错误本身中获取要安装的版本。 对于所有其他命令,我在一个变量中得到错误,但是对于一个命令,它根本没有出现。 我尝试了所有可能的解决方案。

我需要此命令的输出

sploutput=$(sudo dkms install -m spl -v $version)

echo $sploutput

echo $sploutput # This is giving nothing.

我也尝试将它包装在字符串周围,例如"sploutput=$(sudo dkms install -m spl -v $version)"

echo "{sploutput}"

似乎没有任何作用。

sploutput=$(sudo dkms install -m spl -v $version)
echo $sploutput

可能是因为dkms installSTDERR而不是STDOUTdkms install输出,并且使用您正在使用的命令,您只会在变量中获得STDOUT输出。 两者都可以,您可以尝试:

sploutput=$(sudo dkms install -m spl -v $version 2>&1)

STDERR重定向到STDOUT

按照ZMO的回答:尝试运行sudo dkms install -m spl -v $version

看,它返回什么? :STDERR或STDOUT。

万一失败,它将不会在sploutput中显示任何内容。 它仅将STDOUT写入变量。

使用2>&1(将标准错误写入标准输出) 您可以参考IO重定向

您可以使用以下内容:

sploutput=$(sudo dkms install -m spl -v $version 2>&1)
echo $sploutput

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM