[英]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 install
在STDERR
而不是STDOUT
上dkms 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.