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



我在安装时尝试通过 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 上,并且使用您正在使用的命令,您只会在变量中获得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

相关内容

  • 没有找到相关文章

最新更新