欢迎,来自IP地址为:44.222.82.133 的朋友
通过变量传递,可以让我们的 Bash 脚本更加有用且更具交互性。
让我们以一个示例来演示脚本的参数传递。
向 shell 脚本传递参数
在执行脚本时,可以给脚本添加额外的变量,示例如下:
# ./my_script.sh var1 var2
在”my_script.sh”脚本里,可以使用 $1 来表示第一个参数”var1″,使用 $2 来表示第二个参数,以此类推。
PS:注意”$0″是一个特殊变量,它保存的是执行脚本文件的文件名。
进入之前创建的脚本文件目录,创建一个脚本文件”arguments.sh”,内容如下:
#!/usr/bin/bash echo "Script name is: $0" echo "First argument is: $1" echo "Second argument is: $2"
保存脚本文件,并将其设置为可执行。执行时注意给脚本添加两个字符串作为其参数,执行结果如下所示:
各个参数之前是用空格或 Tab 来间隔的,如果参数中包括间隔符,则需要用双引号括起。同时,参数时支持调用其它全局变量等内容的。
Bash 脚本最多支持 255 参数,超过10以上的参数需要使用大括号括起,形式为”${10}”、”${11}”…”${n}”。
正如大家看到的,$0指代脚本名称,其余参数用数字指代,还有一些特殊字符指代了其它特定的参数值:
特殊变量 | 描述 |
---|---|
$0 | 脚本文件名 |
$1,$2…$9 | 脚本参数 |
${n} | 脚本10-255参数 |
$# | 参数的数量 |
$@ | 全部参数 |
$$ | 当前脚本的进程ID |
$! | 上次执行完成的进程ID |
$? | 上一条命令的执行状态 |
如果参数数量与脚本内容不符会发生什么
在上面的示例中,我们给脚本传递了两参数并且全部使用了它们。
如果只传递一个参数或多传递参数会发生什么呢?执行结果如下所示:
可以看到,无论是参数传递较使用少了还是多了,脚本都不会发生错误。脚本中使用的未传的参数会默认为空,多传递的参数如果脚本中未使用,那么也不会报错。
当然,如果参数传递少了,而脚本中需要使用缺失参数的内容,那么自然也会产生错误。
接收用户输入实现脚本交互
我们可以使用脚本提示用户通过键盘输入需要的内容,这样可以大大提高脚本的交互性。
“read”命令可以实现这个功能,示例如下:
# echo "Enter something" # read var
“echo”命令虽然并不是必须的,但它可以提示用户需要输入内容,否则执行”read”命令后,会一直等待用户输入,从而给用户造成困扰。用户输入完成内容后,按回车(enter)键完成输入,输入的内容保存在变量 var 中。
当然,”read”命令也支持显示提示信息,格式如下所示:
# read -p "Enter something" var
现在,创建一个新的脚本文件”interactive.sh”,内容如下:
#!/usr/bin/bash echo "What is your name, stranger?" read name read -p "What's your full name, $name? " full_name echo "Welcome, $full_name"
脚本先使用 read 命令接收变量 name 值,然后在脚本的 read 语句中使用该该值,然后再得到变量full_name 的值,并最终显示出来。
现在,我们可以完成一个可以交互的脚本了,下一节将使用脚本实现简单的数学运算 >>Bash 基础(四):数学运算<<
One thought on “Bash 基础(三):传参以及接收输入”