linux – 仅在命令失败时重定向stdout?
老栗子 2019-09-12 02:05:41 我正在写一个应该对用户“透明”的bash脚本.它从用户读取命令并拦截它们,只允许其中一些命令由bash执行,具体取决于某些条件.它(基本上)的工作原理如下:
while true; do
read COMMAND
can_be_done $COMMAND
if [ $? == 0 ]; then
eval $COMMAND
if [ $? != 0 ]; then
echo "Error: command not found"
fi
fi
done
问题是,当命令失败时,您还会将内容打印到控制台.但是,如果我将结果保存在变量中并且只在它没有失败时打印它,就像这样:
RESULT=$(eval $COMMAND)
然后还有另一个问题:特殊格式丢失(例如,“ls –color”不再显示颜色)
我的问题是:如果成功,有没有办法让命令打印到STDOUT,但如果失败则有/ dev / null吗?