
私はifステートメント内でコマンドエラーをリダイレクトする必要があるスクリプトを作成しています。
ERROR=""
if tar -xf $1 -C $2/$DIR_NAME 2> $ERROR;
then
echo "Done"
else
rm -rf $2/$DIR_NAME
echo "Errors during execution:"
echo $ERROR
fi
そのため、デフォルトでスクリプトを実行したときにエラーが発生したtar
場合にのみ、このコマンドを印刷したいと思います。echo "Errors during execution:"
line 20: $ERROR: ambiguous redirect
この目標をどのように達成できますか?
答え1
テキストを変数にリダイレクトできず、キャプチャする必要があります。しかし、stdoutの代わりにstderrテキストを保持したいと思います。
if error=$( tar -xf "$1" -C "$2/$dir_name" 2>&1 1>/dev/null ); then ...
if
tar の終了状態に応じて動作します。
ALL_CAPS_VARNAMESを使用する習慣を捨ててください。