登录|注册|帮助中心|联系我们

导航
首页 综合百科 生活常识 数码科技 明星名人 传统文化 互联网 健康 影视 美食 教育 旅游 汽车 职场 时尚 运动 游戏 家电 地理 房产 金融 节日 服饰 乐器 歌曲 动物 植物
当前位置:首页 > 数码科技

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

发布时间:2023年1月5日责任编辑:陈小树标签:参数命令

什么是命令行参数(读取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


其它知识推荐

溜溜百科知识网——分享日常生活学习工作各类知识。 垃圾信息处理邮箱 tousu589@163.com
icp备案号 闽ICP备14012035号-2 互联网安全管理备案 不良信息举报平台 Copyright 2023 www.6za.net All Rights Reserved