私はUnixコマンドの出力をキャプチャするために次のようなものを使用する必要があることを学びました。
RESULT=$(command in question)
fsarchiver
RESULT
以前のオプションは使用されなく-z
なったため、変数バージョンをキャプチャしたいと思いますfsarchiver
。-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
答え1
fsarchiver
バージョン情報を標準エラーおよびls
標準出力に記録します。どちらが正しいかは議論の余地があります。バラより進行状況レポート/ログ情報はstderrまたはstdoutに属していますか?関連する議論をしましょう。ls
あなたの場合、おそらくGNUバージョンとGNUコーディング標準バージョン情報を標準出力に強制的に記録。
キャプチャバージョンが利用可能
RESULT=$(fsarchiver --version 2>&1)