详解shell中脚本参数传递的两种方式
更新时间:2021年03月21日 10:09:04 作者:随风丶逆风
这篇文章主要介绍了详解shell中脚本参数传递的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
方式一:$0,$1,$2..
采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${10},${11}....才能获取到参数,但是一般很少会超过10个参数的情况。
1.1 示例:新建一个test.sh的文件
1 2 3 4 |
|
在shell中执行脚本,结果如下
$ ./test.sh 1 2
#shell中将会输出:
脚本./test.sh
第一个参数1
第二个参数2
1.2 下面是参数超过10个的情况,在test.sh文件写入
1 2 3 4 5 6 7 8 9 |
|
在shell中执行脚本,结果如下
$ ./test.sh a b c d 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文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
用一个while循环加case分支获取不同参数,:a:b:c相当于定义参数的变量名,有时候可能会有未知参数,所以增加一个?的分支。
在shell中执行脚本,结果如下
$ ./test.sh -a 1 -b 2 -c 3
#在shell中的输出
参数a的值1
参数b的值2
参数c的值3
$ ./test.sh -a 1 -c 3
#在shell中的输出
参数a的值1
参数c的值3
$ ./test.sh -a 1 -c 3 -d 4
#在shell中的输出
参数a的值1
参数c的值3
未知参数
优点:由于使用了-a加参数值的方式进行一一匹配,所以不会参数匹配错误,同时也可以缺省参数,并不会导致参数错误,同时也便于后期参数的扩展和移植
缺点:脚本执行时参数需要的输入会增多
总结:推荐使用getopts的方式进行参数传递
方式三:声明变量 直接引用
先在test1.sh脚本中声明变量AA BB CC DD
1 2 3 4 |
|
在test2.sh脚本中引用变量AA BB CC并打印
1 |
|
注意:执行脚本的时候使用(. 脚本名)可以引用脚本外声明的变量,使用(sh 脚本名)不能引用局部之外的变量
https://www.jb51.net/article/197540.htm
Shell脚本传递参数的3种方法比较
更新时间:2015年05月08日 09:43:37 投稿:junjie
这篇文章主要介绍了Shell脚本传递参数的3种方法比较,本文直接给出代码示例,在代码中包含详细注解,需要的朋友可以参考下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
|