Variable

這是 fsarchiver –version 中的錯誤嗎

  • January 13, 2019

我了解到,為了擷取 Unix 命令的輸出,應該使用類似

RESULT=$(command in question)

我想擷取fsarchiver變數的版本,RESULT因為之前的選項-zoffsarchiver已被棄用。應該使用-Z0.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 編碼標準要求將版本資訊寫入標準輸出

您可以使用擷取版本

RESULT=$(fsarchiver --version 2&gt;&1)

引用自:https://unix.stackexchange.com/questions/494250