Variable
這是 fsarchiver –version 中的錯誤嗎
我了解到,為了擷取 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 編碼標準要求將版本資訊寫入標準輸出。您可以使用擷取版本
RESULT=$(fsarchiver --version 2>&1)