我正在寻找我的脚本参数问题的解决方案
这就是事情:
我想用:
启动我的脚本./myscript.sh -d9 file_name
而不是9
,可能还有其他数字
是否有处理这类事情的功能?
答案 0 :(得分:2)
尝试使用getopt:
$ getopt d: -d42 arg
-d 42 -- arg
第一个参数是选项列表(冒号表示该选项带参数)
答案 1 :(得分:2)
如果您正在使用bash shell,请查看getopts
内置命令。在bash提示符下键入help getopts
以获取有关它的信息。
简而言之,它接受一个可能的选项列表以及它们是否接受参数值,它将返回下一个选项来处理一对变量。在process all the options的while循环中使用它,然后您还可以处理文件名:
while getopts "d:" flag
do
if [ "$flag" = "d" ]
then
D=$OPTARG
fi
done
echo $D # argument value you are looking for
shift $(($OPTIND - 1))
echo $1 # the file name after the parsed options
答案 2 :(得分:-1)
在您的示例中,$1
为“-d9”,$2
为“file_name”。
$@
是“-d9 file_name”,如果您超过9,请开始使用${10}
使用正则表达式查找值。
例如:
if [[ $@ =~ "d (\d+)( |$)" ]]