持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情
- 参照使用c语言代码编写的命令行可执行程序传参语法规范
- 参数与参数之间、脚本文件名与参数之间使用1个或多个空格分隔
- $0指代脚本文件本身
- $1指代命令行上的第1个参数
- $2指代命令行上的第2个参数,以此类推其他参数的脚本内引用方法
- $@指代命令行上的所有参数(参数数组)
- $#指代命令行上的参数个数(参数数组大小)
创建6-2.sh文件,输入以下脚本:vim 6-2.sh
#!/bin/bash
echo $3 # --> results with: banana
BIG=$5
echo "A $BIG costs just $6"
# 输出所有参数
echo "$@"
# 一下代码输出命令行参数的总数
echo $#
直接运行这个脚本(不带任何参数)
可以看到,任何参数位都没有被输出,并且 输出命令行参数总数 echo "$#"这个命令确实输出了0,代表没有参数。
用调试模式看一眼:bash -x 6-2.sh
带参数:bash 6-2.sh apple 5 banana 8 "Fruit Basket" 15,要注意:apple是第一个参数
直接用代码行形式解释:
第一行直接输出 banana,因为脚本写的是 echo $3,代表输出第三个参数,回到命令行第三个参数是:banana
第二行输出的是 A Fruit Basket costs just 15,脚本写的是 echo "A $BIG costs just $6",这里就比较有意思了,$BIG是引用已定义的变量,所以我们回到BIG=$5,找到第5个参数为"Fruit Basket",注意这里是用双引号包起来的,如果不用双引号,那么第5个参数为Fruit;而$6自然而然就是第六个参数 15了
第三行输出所有参数,相当于是把你在命令行的参数再给输出一遍,apple 5 banana 8 Fruit Basket 15,要注意的是,里面的双引号被自动抹除了
第四行输出6,这个没什么好说的,就是命令行敲的所有参数的个数总和。