繁体   English   中英

使用多个参数的bash脚本

[英]bash script using multiple arguments

我正在编写一个接受命令行参数的Bash脚本,但不仅是一次一个,而是一次使用case语句。

到目前为止,这是我的代码

while [ $# -gt 0 ]
do
    case "$1" in
      -n|--name)
          name="$2"
      ;;
      -s|--size)
          size="$2"
      ;;
      -l|--location)
          location="$2"
      ;;
    esac
done

这段代码一次只接受一个,我需要它能够指定他们想要的数量。

使用getopt您可以按如下方式解决任务:

OPTS=`getopt -o n:s:l: --long name:,size:,location: -- "$@"`
eval set -- "$OPTS"

这会将原始位置参数拆分为选项(采用冒号表示的参数)和剩余参数,两者都可以引用。 然后评估并set -- $OPTS getopt的结果set -- $OPTS将位置参数$1$2$3 ,...设置为getopt 之后我们可以循环遍历位置参数(并在我们遇到时立即停止--将选项与其余参数分隔到脚本中)。

while true
do
  case "$1" in
    -n|--name)
      name="$2"
      shift 2
      ;;
    -s|--size)
      size="$2"
      shift 2
      ;;
    -l|--location)
      location="$2"
      shift 2
      ;;
    --)
      shift
      break
      ;;
     *)
      echo "Internal error!"
      exit 1
  esac
done

echo -e "name: $name\nsize: $size\nlocation: $location"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM