将shell命令的输出存储在一个变量中
问题描述:
我试图在安装时通过shell脚本安装zfs我得到一些错误,因此要完全自动化它,我想从错误本身获取要安装的版本。对于所有其他命令,我在一个变量中得到错误,但对于其中一个命令它根本没有。我尝试了每种解决方案。将shell命令的输出存储在一个变量中
我需要这个命令
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
它可能是因为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 redirection
您可以使用下面:
sploutput=$(sudo dkms install -m spl -v $version 2>&1)
echo $sploutput
,似乎工作太感谢你了:) –