什么是命令行参数(读取shell命令行中的参数)
什么是命令行参数(读取shell命令行中的参数)
shell脚本通过美元符号$读取命令行中的参数,比如$0表示程序名,$1表示第一个参数,$2表示第二个参数,${10}表示表示第10个参数,以此类推。建立脚本test34.sh如下:
#/bin/bash
total=$[ $1 * $2 + $3 ]
echo "$1 * $2 + $3 = $total"
运行如下:
./test34.sh 4 5 6
结果如下:
4 * 5 + 6 = 26
当把字符串输入给shell脚本的时候,注意是以空格作为分隔符,如果字符串本身就有空格的话,那么用双引号或者单引号,比如
#/bin/bash
echo "$1 is pretty nice!"
运行如下:
./test35.sh "wu lin wai zhuan"
结果如下:
wu lin wai zhuan is pretty nice!
$0是程序名,这个程序名是运行时输入的完整路径,而不是文件名,比如下面的:
#/bin/bash
echo "shell path is $0"
运行输入:
bash shell/test36.sh
结果如下:
shell path is shell/test36.sh
如果想要只截取出文件名的话可以使用basename命令,这个命令会返回不包含前面路径的程序名,如脚本test37.sh
#/bin/bash
shellName=$(basename $0)
echo "shell path is $shellName"
运行输入:
bash shell/test37.sh
结果如下:
shell path is test37.sh
通过basename指令,我们可以通过脚本名来处理相应的逻辑,比如建立一个shell脚本,然后创建两个不同名字的链接,让这两个链接处理不同的逻辑。建立脚本test38.sh如下:
#/bin/bash
name=$(basename $0)
if [ $name = "add" ];then
res=$[ $1 + $2 ]
elif [ $name = "mul" ];then
res=$[ $1 * $2 ]
fi
echo "$0 -> result is $res"
然后,创建两个链接文件:
ln -s test38.sh add
ln -s test38.sh mul
输入:
./add 4 4
运行结果为:
./add -> result is 8
输入:
./mul 5 6
运行结果为:
./mul -> result is 30
- 1bat的大数据(BAT的大数据来源)
- 2三星s8屏幕上端2(三星s8屏幕上端2个按键)
- 3三星屏幕坏了如何导出(三星屏幕摔坏了如何导出数据么)
- 4红米3x怎么关闭自动更新(红米k40s怎么关闭自动更新)
- 5微信上防止app自动下载软件怎么办(微信上防止app自动下载软件怎么办啊)
- 6押镖多少钱(押镖一个月有多少储备金)
- 7瑞星个人防火墙胡功能(瑞星个人防火墙协议类型有哪些)
- 8cf现在等级是多少(cf等级2020最新)
- 9老滑头多少条鱼(钓鱼老滑头有什么用)
- 10WPS自动调整语法(wps如何修改语法)
- 11dell控制面板防火墙(dell的防火墙怎么关闭)
- 12丑女技能升多少(丑女技能需要满级吗)
- 13智能家居系统怎么样(智能家居系统好吗)
- 14戴尔屏幕(戴尔屏幕闪烁)
- 15y85屏幕信息(vivoy85息屏显示时间怎么设置)
- 16魅蓝note3屏幕出现方格(魅蓝note屏幕竖条纹)
- 17v8手指按屏幕(触屏手指)
- 18金为液晶广告机(液晶广告机lb420)
- 19三星显示器怎么校色(三星显示器 调色)
- 20hkc显示器dvi音频(hkc显示器有音响么)
- 21康佳液晶智能电视机(康佳液晶智能电视机怎么样)
- 22做液晶画板电脑(做液晶画板电脑怎么操作)
- 23液晶屏极化现象原理(液晶屏极化现象原理是什么)
- 24企业网络安全防火墙(企业网络防护)
- 256splus黑屏屏幕不亮(苹果6s plus屏幕突然黑屏)
- 26充电导致屏幕失灵(充电导致屏幕失灵怎么办)
- 27超极本屏幕旋转(笔记本电脑屏幕旋转,怎么转过来?)
- 28igmp防火墙(防火墙配置ipv6)
- 29荣耀王者多少经验(王者荣耀经验多少一级)
- 30lol老将还剩多少(qg老将)