Shell passing parameters
We can in the implementation of Shell script to pass parameters to the script, the script takes parameters within theformat: $ n.n represents a number, 1 for the first execution of the script parameter, 2 for the second parameter to execute the script, and so on ......
Examples
The following examples we pass three parameters to the script, and outputs, where $ 0 is the name of the file to execute:
#!/bin/bash # author:本教程 # url:www.w3big.com echo "Shell 传递参数实例!"; echo "执行的文件名:$0"; echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3";
Set executable permissions to the script and execute the script, the output is as follows:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数实例! 执行的文件名:./test.sh 第一个参数为:1 第二个参数为:2 第三个参数为:3
In addition, there are several parameters to handle special characters:
Parameter handling | Explanation |
---|---|
$ # | The number of parameters passed to the script |
$ * | In a single string displays all parameters passed to the script. Such as "$ *" with "" "enclosed case, the form of" $ 1 $ 2 ... $ n "output of all parameters. |
$$ | The current process ID number of the script runs |
$! | Finally, a process running in the background ID number |
$ @ | * $ With the same, but when you use quotation marks, and returns each parameter in quotes. Such as "$ @" with "" "enclosed case, the form of" $ 1 "" $ 2 "..." $ n "output of all parameters. |
$ - | Shell displays the current option to use, and set the command the same function. |
$? | Displays exit status of the last command. 0 indicates no errors, and any other value indicates an error. |
#!/bin/bash # author:本教程 # url:www.w3big.com echo "Shell 传递参数实例!"; echo "第一个参数为:$1"; echo "参数个数为:$#"; echo "传递的参数作为一个字符串显示:$*";
Execute the script, the output is as follows:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数实例! 第一个参数为:1 参数个数为:3 传递的参数作为一个字符串显示:1 2 3
$ * And $ @ difference:
- The same point: all references to all parameters.
- Differences: only reflected in double quotes. Suppose the script runs when writing the three parameters 1,2,3 ,, "*" is equivalent to "123" (pass a parameter), and "@" is equivalent to "1", "2", " 3 "(passed three parameters).
#!/bin/bash # author:本教程 # url:www.w3big.com echo "-- \$* 演示 ---" for i in "$*"; do echo $i done echo "-- \$@ 演示 ---" for i in "$@"; do echo $i done
Execute the script, the output is as follows:
$ chmod +x test.sh $ ./test.sh 1 2 3 -- $* 演示 --- 1 2 3 -- $@ 演示 --- 1 2 3