BASH脚本案例语句需要检测特定参数



我必须编写此脚本,在其中它将显示在自己的行中输入的每个条目,并将每条线与" *****"分开。我已经大部分时间都将其倒下了,但是现在我需要检测何时将" TestError"和/或"现在"作为参数输入。现在设置它的方式,如果它们是行上的第一个参数,它将正确检测到这些单词,我只是不确定如何将其设置在该单词的位置,无论其在线上如何。我还需要 * *吗?我需要说"不知道该怎么办"的情况是,对于不是" testerror"或"现在"的所有其他参数,目前它将为第一个参数而不是其余的参数。

它会像现在这样起作用吗?还是我只需要使用 *?和 *案例,然后在 *中放置一个if/then/else/fi语句?为了找到" testerror"现在"和任何其他参数。

# template.sh
function usage
{
  echo "usage: $0 arguments ..."
  if [ $# -eq 1 ]
  then echo "ERROR: $1"
  fi
}

   # Script starts after this line.

case $1 in
  TestError)
     usage $*
     ;;
  now)
     time=$(date +%X)
     echo "It is now $time"
     ;;
  *?)
     echo "My Name"
     date
     echo
     usage
     printf "%sn*****n" "Do not know what to do with " "$@"
     ;;
  *)
     usage
     ;;
esac

您需要在参数上循环,为每个参数执行case语句。

for arg in "$@"; do
    case $arg in
      TestError)
        usage $*
        ;;
      now)
        time=$(date +%X)
        echo "It is now $time"
        ;;
      *?)
        echo "My Name"
        date
        echo
        usage
        printf "%sn*****n" "Do not know what to do with " "$@"
        ;;
      *)
        usage
        ;;
    esac
done

**?将匹配相同的字符串。您的意思是字面上匹配?*?)?

相关内容

  • 没有找到相关文章

最新更新