如何使用 $1 和 $2 在 bash 脚本中包含自定义命令选项?

如何使用 $1 和 $2 在 bash 脚本中包含自定义命令选项?

我有一个脚本myscript.sh

#!/bin/sh

echo $1 $2

它的用途类似于...

./myscript.sh foo bar

这给了我一个输出...

foo bar

但我怎样才能让这个脚本包含自定义命令选项呢?例如 ...

./myscript.sh -a foo and corespond to $1

./myscript.sh -b bar and corespond to $2

答案1

你应该使用男人 1 重击:

小例子:

#!/bin/bash

while getopts "a:b:" opt      # get options for -a and -b ( ':' - option has an argument )
do
    case $opt in
        a) echo "Option a: $opt, argument: $OPTARG";;
        b) echo "Option b: $opt, argument: $OPTARG";;
    esac
done

答案2

由于您将 bash 列为所使用的 shell,因此请输入:

$ help getopts

这将打印类似的内容:

getopts: getopts optstring name [arg]
解析选项参数。

shell 过程使用 Getopts 将位置参数解析为选项。

OPTSTRING 包含要识别的选项字母;如果字母后跟冒号,则该选项应该有一个参数,该参数应该用空格与其分隔。

每次调用时,getopts 都会将下一个选项放入 shell 变量 $name 中,如果 name 不存在则初始化 name,并将下一个要处理的参数的索引放入 shell 变量 OPTIND 中。每次调用 shell 或 shell 脚本时,OPTIND 都会初始化为 1。当选项需要参数时,getopts 将该参数放入 shell 变量 OPTARG 中。

Getopts 通常解析位置参数 ($0 - $9),但如果给出更多参数,则会改为解析它们。

有关的:

  1. 获取选择教程。
  2. getopts 如何传递命令行选项
  3. 如何在 bash 中使用 getopts
  4. Getopt、getopts 还是手动解析?

相关内容