2016-06-10 138 views
0

我试图在安装时通过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}" 

似乎没有任何工作。

回答

1
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

+0

,似乎工作太感谢你了:) –

1

按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 
相关问题