博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell:传递命令行参数
阅读量:6869 次
发布时间:2019-06-26

本文共 1061 字,大约阅读时间需要 3 分钟。

shell脚本文件()内容:

#!/bin/bashecho "脚本文件名:$0"echo "参数1:$1"echo "参数2:$2"echo "参数3:$3"

执行脚本:

chmod +x t.sh #赋予脚本文件可执行权限./t.sh a 1 #执行脚本文件并向其传递2个参数:脚本文件名:./t.sh参数1:a参数2:1参数3:./t.sh a 1 b c #执行脚本文件并向其传递4个参数:脚本文件名:./t.sh参数1:a参数2:1参数3:b

脚本文件中获取调用者传递的参数用:$n

还有以下特殊情况:

  • $# 表示传递到脚本的参数个数
  • $* 表示以一个单字符串显示所有向脚本传递的参数。
  • $$ 表示脚本运行的当前进程ID号
  • $! 表示后台运行的最后一个进程的ID号
  • $@$*相同,依次返回每个参数。
  • $- 表示Shell使用的当前选项,与set命令功能相同。
  • $? 表示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
#!/bin/bashecho "参数个数:$#"echo "\$*显示的:$*"echo "\$@显示的:$@"echo "\$\$显示的:$$"echo "\$!显示的:$!"echo "\$-显示的:$-"echo "\$?显示的:$?"

执行:

./t.sh 1 2 a b参数个数:4$*显示的:1 2 a b$@显示的:1 2 a b$$显示的:6252$!显示的:$-显示的:hB$?显示的:0

$@$*的不同:

#!/bin/bashfor i in "$*"; do    echo $idonefor i in "$@"; do    echo $idone

执行:

./t.sh 1 2 a b1 2 a b12ab

注意在使用$*$@时要加引号"


参数中有特殊字符的处理,用\转义或用""或’'包裹:

[root@xjb tmp]# cat s.sh #!/bin/bashfor i in "$@"; do    echo $idone[root@xjb tmp]# ./s.sh "sadf" 'da"f' "'d)" d)-bash: syntax error near unexpected token `)'[root@xjb tmp]# ./s.sh "sadf" 'da"f' "'d)" d\)sadfda"f'd)d)

转载于:https://www.cnblogs.com/xuejianbest/p/10285195.html

你可能感兴趣的文章
[译] 正确实现 linkedPurchaseToken 以避免重复订阅
查看>>
SpringBoot2.0 整合 RocketMQ ,实现请求异步处理
查看>>
Verdaccio 搭建私有 NPM
查看>>
java11新特性---Nest-Based Access Control(嵌套访问控制)
查看>>
(七)微服务分布式云架构spring cloud - common-service 项目构建过程
查看>>
Node.js买卖比特币 教程
查看>>
ios讯飞输入与ios自带输入法语音测试
查看>>
mac开发环境工具推荐
查看>>
css之半透明边框
查看>>
Go第三方库
查看>>
《Android开发艺术探索》之IPC
查看>>
Java B2B2C多用户商城 springcloud架构-springcloud 断路器
查看>>
微软支持BCH支付方式 曾三次暂停BTC支付
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
每天进步一点点:(21)SAMBA笔记
查看>>
ajax结构体请求后台
查看>>
linux mint 关于web开发的环境配置
查看>>
10g直接删除数据文件后的启动
查看>>
JavaScript ~~~~~ 清空上一次上传的文件
查看>>