我了解到,为了捕获 Unix 命令的输出,应该使用类似
RESULT=$(command in question)
我想捕获fsarchiver
变量的版本,RESULT
因为之前的选项-z
offsarchiver
已被弃用。应该使用-Z
0.8.4 版本(在 Ubuntu 18.04 LTS 下使用的版本)。为了在我的脚本中应用正确的压缩级别,它必须区分当前版本的fsarchiver
.
所以我尝试了这个:
$ RESULT=$(fsarchiver --version)
fsarchiver 0.6.22 (2016-02-13)
$ echo "${RESULT}"
$
所以这个只是返回一个空行。但是我可以确定ls
这种方式的版本,所以我肯定不会完全误解将命令的输出捕获到 bash 脚本中的变量:
$ RESULT=$(ls --version)
$ echo "${RESULT}"
ls (GNU coreutils) 8.25
Copyright © 2016 Free Software Foundation, Inc.
Lizenz GPLv3+: GNU GPL Version 3 oder höher <http://gnu.org/licenses/gpl.html>
Dies ist freie Software: Sie können sie ändern und weitergeben.
Es gibt keinerlei Garantien, soweit wie es das Gesetz erlaubt.
Geschrieben von Richard M. Stallman und David MacKenzie.
$
在询问他们的版本时,为什么在捕获他们的结果方面会有不同ls
的表现?fsarchiver
fsarchiver
将其版本信息写入其标准错误,ls
写入其标准输出。哪一个是正确的是一个争论的问题;请参阅进度报告/日志信息是否属于标准错误或标准输出?进行一些相关的讨论。ls
在您的情况下可能是 GNU 版本,并且 GNU 编码标准要求将版本信息写入标准输出。您可以使用捕获版本