我正在创建一个脚本,我需要重定向 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
您无法将文本重定向到变量中,您需要捕获它。但是您想保留 stderr 文本而不是 stdout:
if error=$( tar -xf "$1" -C "$2/$dir_name" 2>&1 1>/dev/null ); then ...
if
将作用于 tar 的退出状态。
改掉使用 ALL_CAPS_VARNAMES 的习惯。