处理意外的bash命令输出

处理意外的bash命令输出,bash,error-handling,hp-ux,Bash,Error Handling,Hp Ux,我正在尝试处理for循环中命令的意外输出。我使用的是一个专有的解压实用程序(mfunzip),但是当该实用程序遇到一个损坏的文件时,它会发出一条无休止的“InputBit中的致命错误!”消息 我试图捕获输出并继续循环到下一个文件 for FILE in $(ls); do if [ -d "$FILE" ]; then ... ... # without command output, it runs indefinitely output=

我正在尝试处理for循环中命令的意外输出。我使用的是一个专有的解压实用程序(mfunzip),但是当该实用程序遇到一个损坏的文件时,它会发出一条无休止的“InputBit中的致命错误!”消息

我试图捕获输出并继续循环到下一个文件

for FILE in $(ls); do
   if [ -d "$FILE" ]; then
      ...
      ...
      # without command output, it runs indefinitely
      output=$(mfunzip $currentfile $extractdir)

      # it never reaches here
      echo $output
      if [[ $output = *Fatal* ]]; then
         continue  
      fi
   fi
done
但是,它似乎不起作用,因为它在输出=$(mfunzip…处阻塞。。。我假设它将无休止地输出到$output。另一个问题似乎是“致命错误”可能不会立即出现,而是在尝试mfunzip文件时出现了一半


有更好的方法来处理这种类型的输出吗?

要“处理来自命令的(意外或预期的)输出”,您应该使用:,这是专门为此类事情设计的。

与您的问题无关,但使用*而不是$(ls)更安全。阿披舍克这不是来自服务器的实际脚本,我刚刚在“some”文件夹中快速创建了for过程的模型,以显示问题所在:请发布真实再现您的问题的代码。你的模型代码很好;它可能存在的唯一问题是
mfunzip
从未完成。