咱们在使用脚本的过程当中,还得可以与使用者进行交互。其中一个方法就是可使用命令行参数。shell
shell会将一些称为位置参数的特殊变量分配给输入到命令行中的 全部参数。这也包括shell所执行的脚本名称。位置参数变量是标准的数字:$0是程序名,$1是第 一个参数,$2是第二个参数,以此类推。参数之间用空格隔开。可是在第9个变量以后,你必须在变量数字周围加上花括号,好比${10}。bash
下面的shell从命令行接受一个参数$1,用来控制循环的输出“hello world”的次数。工具
输出:测试
咱们来输入字符串试试:命令行
命令 bash paramshell xin日志输出:3d
记住,每一个参数都是用空格分隔的,因此shell会将空格当成两个值的分隔符。要在参数值中包含空格,必需要用引号(单引号或双引号都可)。指针
引号并不是数据的一部分。它们只是代表数据的起止位置。日志
能够用$0参数获取shell在命令行启动的脚本名。这在编写多功能工具时很方便。blog
简单的咱们能够输出刚刚那个脚本文件名。字符串
输出:
可是你若是用另外一种方式执行的,会收到奇怪的结果,文件前面多了一点东西。
当传给$0变量的实际字符串不单单是脚本名,而是完整的脚本路径时, 变量$0就会使用整个路径,不过咱们可使用basename来解决问题。
固然就像写程序同样,咱们会判断空指针同样,在脚本中咱们也会用-n测试来检查命令行参数$1中是否有数据(这个可能须要看shell的类型,有的会报错)。好比:if [ -n "$1" ]。
参数统计
特殊变量$#含有脚本运行时携带的命令行参数的个数。
输出以下:
获取全部的参数
$*变量会将命令行上提供的全部参数看成一个单词保存。
$@变量会将命令行上提供的全部参数看成同一字符串中的多个独立的单词。这样 你就可以遍历全部的参数值,获得每一个参数。
输出:
shift命令
在使用shift命令时,默认状况下它会将每一个参数变量向左移动一个位置。因此,变量$3 的值会移到$2中,变量$2的值会移到$1中,而变量$1的值则会被删除(注意,变量$0的值,也 就是程序名,不会改变)
输出:
下节再续!
有什么讨论的内容,能够加我公众号: