什么是命令行参数(读取shell命令行中的参数)

[复制链接] 【举报中心】
查看15 | 回复0 | 2024-9-5 17:01:50 | 显示全部楼层 |阅读模式 来自 中国江苏扬州
主题:什么是命令行参数(读取shell命令行中的参数)

什么是命令行参数(读取shell命令行中的参数)

shell脚本通过美元符号$读取命令行中的参数,比如$0表示程序名,$1表示第一个参数,$2表示第二个参数,${10}表示表示第10个参数,以此类OPenKE.cn推。建立脚本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


         
关键字:脚本,参数,命令行,程序,链接
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

匿名

1392

主题

0

回帖

1798

积分

金牌会员

Rank: 6Rank: 6

精华
0
金币
1393 个
贡献
0
违规
0
注册时间
2022-11-3