美文网首页
2018-09-06 shell中脚本参数传递的两种方式

2018-09-06 shell中脚本参数传递的两种方式

作者: 遵天循道 | 来源:发表于2018-09-27 11:49 被阅读13次

转:https://blog.csdn.net/sinat_36521655/article/details/79296181方式一:$0,$1,$2..

采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${10},${11}....才能获取到参数,但是一般很少会超过10个参数的情况。

1.1 示例:新建一个test.sh的文件

#!/bin/bash

echo"脚本$0"

echo"第一个参数$1"

echo"第二个参数$2"

在shell中执行脚本,结果如下

$ ./test.sh12

#shell中将会输出:

脚本./test.sh

第一个参数1

第二个参数2

1.2 下面是参数超过10个的情况,在test.sh文件写入

#!/bin/bash

echo"脚本名$0"

echo"第一个参数$1"

echo"第二个参数$2"

echo"第三个参数$3"

echo"第四个参数$4"

……

echo"第十个参数$10"

echo"第十个参数${10}"

在shell中执行脚本,结果如下

$ ./test.sh a bcd e f g h i j

#shell中将会输出:

脚本名./test.sh

第一个参数a

第二个参数b

第三个参数c

第四个参数d

第五个参数e

第六个参数f

第七个参数g

第八个参数h

第九个参数i

第十个参数a0

第十个参数j

可以看到${10}正确读取到了第十个参数,而$10被分成$1读取到第一个参数a然后拼接字符串0,于是输出a0。

优点:获取参数更容易,执行脚本时需要的输入少

缺点:必须按照顺序输入参数,如果中间漏写则参数对应就会错误

方式二:getopts

语法格式:getopts [option[:]] [DESCPRITION] VARIABLE

option:表示为某个脚本可以使用的选项":":如果某个选项(option)后面出现了冒号(":"),则表示这个选项后面可以接参数(即一段描述信息DESCPRITION)

VARIABLE:表示将某个选项保存在变量VARIABLE中

2.1 示例:同样新建一个test.sh文件

whilegetopts":a:b:c:"opt

do

case$optin

        a)

echo"参数a的值$OPTARG"

        ;;

        b)

echo"参数b的值$OPTARG"

        ;;

        c)

echo"参数c的值$OPTARG"

        ;;

        ?)

echo"未知参数"

exit1;;

esac

done

用一个while循环加case分支获取不同参数,:a:b:c相当于定义参数的变量名,有时候可能会有未知参数,所以增加一个?的分支。

在shell中执行脚本,结果如下

$ ./test.sh -a1-b2-c3

#在shell中的输出

参数a的值1

参数b的值2

参数c的值3

$ ./test.sh -a1-c3

#在shell中的输出

参数a的值1

参数c的值3

$ ./test.sh -a1-c3-d4

#在shell中的输出

参数a的值1

参数c的值3

未知参数

优点:由于使用了-a加参数值的方式进行一一匹配,所以不会参数匹配错误,同时也可以缺省参数,并不会导致参数错误,同时也便于后期参数的扩展和移植

缺点:脚本执行时参数需要的输入会增多

总结:推荐使用getopts的方式进行参数传递

---------------------本文来自 随风丶逆风 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/sinat_36521655/article/details/79296181?utm_source=copy

相关文章

  • 工具 | Shell 教程笔记 (2)

    Shell 传递参数 在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n 其他用法: 参考 ...

  • shell(三)

    Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一...

  • Shell 传递参数

    Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n代表一个...

  • 学习Shell - 传递参数

    Shell传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个...

  • shell传递参数

    Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n代表一个...

  • Shell 传递参数

    Shell 传递参数我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个...

  • 执行shell脚本传递参数的方式

    在执行shell脚本的时候,会经常遇到需要向shell脚本传递参数的情况。即是对命令行选项、参数处理的方式。例如:...

  • Shell 传递参数

    Shell传递参数 我们可以在执行Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n代表一个数字...

  • shell 传递参数

    shell 传递参数 我们可以在执行shell脚本时,向脚本传递参数,脚本内获取参数的格式为: $n,n代表一个数...

  • 初学shell2:shell传递参数

    使用shell脚本是,允许向脚本中传递参数 $1-n 标识传递的参数 还有几个特殊字符用来处理参数 $*和$@的区...

网友评论

      本文标题:2018-09-06 shell中脚本参数传递的两种方式

      本文链接:https://www.haomeiwen.com/subject/aydfgftx.html