上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
湖北公众号代运营公司

Shell 传递参数
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
实例
以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名(包含文件路径):
实例
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
为脚本设置可执行权限,并执行脚本,输出结果如下所示:
$ chmod +x test.sh
$ ./test.sh 1 2 3Shell 传递参数实例!执行的文件名:./test.sh第一个参数为:1第二个参数为:2第三个参数为:3
另外,还有几个特殊字符用来处理参数:
| 参数处理 | 说明 |
|---|
| $# | 传递到脚本的参数个数 |
| $* | 以一个单字符串显示所有向脚本传递的参数。 如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 |
| $$ | 脚本运行的当前进程ID号 |
| $! | 后台运行的最后一个进程的ID号 |
| $@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 |
| $- | 显示Shell使用的当前选项,与set命令功能相同。 |
| $? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
实例
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com
echo "Shell 传递参数实例!";
echo "第一个参数为:$1";
echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";
执行脚本,输出结果如下所示:
$ chmod +x test.sh
$ ./test.sh 1 2 3Shell 传递参数实例!第一个参数为:1参数个数为:3传递的参数作为一个字符串显示:1 2 3
$* 与 $@ 区别:
实例
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com
echo "-- $* 演示 ---"
for i in "$*"; do
echo $i
done
echo "-- $@ 演示 ---"
for i in "$@"; do
echo $i
done
执行脚本,输出结果如下所示:
$ chmod +x test.sh
$ ./test.sh 1 2 3-- $* 演示 ---1 2 3-- $@ 演示 ---123
在为shell脚本传递的参数中如果包含空格,应该使用单引号或者双引号将该参数括起来,以便于脚本将这个参数作为整体来接收。
在有参数时,可以使用对参数进行校验的方式处理以减少错误发生:
if [ -n "$1" ]; then
echo "包含第一个参数"
else
echo "没有包含第一参数"
fi
注意:中括号 [] 与其中间的代码应该有空格隔开
墓志铭
墓志铭
muz***ing_zbq@163.com
5年前 (2018-01-30)
friday
vfm***foxmail.com
参考地址
359
Shell 里面的中括号(包括单中括号与双中括号)可用于一些条件的测试:
算术比较, 比如一个变量是否为0, [ $var -eq 0 ]。
文件属性测试,比如一个文件是否存在,[ -e $var ], 是否是目录,[ -d $var ]。
字符串比较, 比如两个字符串是否相同, [[ $var1 = $var2 ]]。
[] 常常可以使用 test 命令来代替,具体可参看:Shell 中的中括号用法总结。
friday
friday
vfm***foxmail.com
参考地址
4年前 (2019-02-13)
lalala
a1.***t@mlsy.eu
10
含有空格的参数,只需要在参数传递的时候加双引号就可以。
#!/bin/bash
echo "---------------with double quote ---------------"
echo "$1"
echo "$2"
echo "$3"
my_procedure() {
echo "$1"
echo "$2"
echo "$3"
}
my_procedure "$@"
echo "---------------withtout double quote ---------------"
echo $1
echo $2
echo $3
my_procedure() {
echo $1
echo $2
echo $3
}
my_procedure "$@"
echo "---------------withtout double quote by passing arguments---------------"
my_procedure $@
输入:
./test.sh "a b" "c d" "e f"
输出结果为:
---------------with double quote ---------------
a b
c d e
f g
a b
c d e
f g
---------------withtout double quote ---------------
a b
c d e
f g
a b
c d e
f g
---------------withtout double quote by passing arguments ---------------
a
b
c
前两部分无论在函数内外,加不加引号都一样,但是在函数传递的时候要保证加引号。
湖北公众号代运营公司
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)