小编Dem*_*wid的帖子

仅在命令失败时重定向stdout?

我正在写一个应该对用户"透明"的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
Run Code Online (Sandbox Code Playgroud)

问题是,当命令失败时,您还会将内容打印到控制台.但是,如果我将结果保存在变量中并且只在它没有失败时打印它,就像这样:

RESULT=$(eval $COMMAND)
Run Code Online (Sandbox Code Playgroud)

然后还有另一个问题:特殊格式丢失(例如,"ls --color"不再显示颜色)

我的问题是:如果成功,有没有办法让命令打印到STDOUT,但如果失败则有/ dev/null吗?

linux bash shell

3
推荐指数
1
解决办法
1575
查看次数

标签 统计

bash ×1

linux ×1

shell ×1