带有字母或数字的linux脚本参数

时间:2010-11-21 19:51:19

标签: linux shell

我正在寻找我的脚本参数问题的解决方案

这就是事情:

我想用:

启动我的脚本
./myscript.sh -d9 file_name

而不是9,可能还有其他数字

是否有处理这类事情的功能?

3 个答案:

答案 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+)( |$)" ]]