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

80酷酷网    80kuku.com

什么是命令行参数(读取shell命令行中的参数)每天三分钟搞定linux shell脚本15 读取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

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: