我有一个脚本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),但如果给出更多参数,则会改为解析它们。
有关的: