在Shell中存在一些特殊且重要的变量,例如:0、1、$#,这些称之为特殊位置参数变量。要从命令行、函数或脚本执行等处传递参数时,就需要在Shell脚本中使用位置参数变量。
|--------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 特殊变量 | 作用说明 |
| 0 | 获取当前执行的Shell脚本的文件名,如果执行脚本包含了路径,那么就包括脚本路径。 |
| n | 获取当前执行的Shell脚本的第n个参数值,n=1...9,当n为0时表示脚本的文件名:如果大于9,则用大括号括起来,例如{10},接的参数以空格空开。 |
| # | 获取当前执行的Shell脚本后面接的参数的总个数 |
| \* | 获取当前Shell脚本所有传参的参数,不加引号和@想用;如果给\*加上双引号,例如:"*",则表示将所有的参数视为单个字符串,相当于 "123" |
| @ | 获取当前Shell脚本所有的传参的参数,不加引号和\*相同;如果给@加上双引号,例如: "@",则表示将所有的参数视为不同的独立字符串,相当于 "1" "2" "3" "..."。这是将多参数传递给其他程序的最佳方式,因为它会保留所有的内嵌在每个参数里的任何空白。当 "@" 和 "*" 都加双引号时,两者是有区别的;都不加双引号时,两者无区别。 |