【问题标题】:bash script split if argument set如果设置了参数,则 bash 脚本拆分
【发布时间】:2015-10-16 03:26:34
【问题描述】:

这里是我试图用 bash 程序实现的一些伪代码。

这个程序将被调用:

filesplit -ufilesplit --update

filesplit

 if -u (or --update) is set:

   echo "Update"

 else:

   echo "No Update

如何在 bash 脚本中实现这种拆分?

【问题讨论】:

标签: bash unix if-statement arguments command-line-arguments


【解决方案1】:

您可以使用[[...]] 中的@(val1|val2) 语法检查这两个值:

filesplit() {
    [[ "${1?needs an argument}" == -@(u|-update) ]] && echo "Update" || echo "No Update"
}

测试:

filesplit -b
No Update
filesplit -u
Update
filesplit --update
Update
filesplit --update1
No Update
filesplit
-bash: 1: needs an argument

【讨论】:

  • extglob 仅用于在生成文件名时使用扩展模式。扩展模式假设在 [[...]] 内。
【解决方案2】:
case "$1" in
  -u|--update)
      echo update
      ;;
  *)
      echo no update
      ;;
esac

【讨论】:

    【解决方案3】:

    只需在[[ ... ]] 条件中使用逻辑或||

    if [[ $1 == -u || $1 == --update ]] ; then
        echo Update
    else
        echo No Update
    fi
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多