SHELL:引用参数会遇到的问题(TIPs)
其实,本文是一个TIPS。
当SHELL通过【$1 / $2 / $3 …】这种方式传递参数的时候你可能会遇到这样的问题:
当参数个数达到两位数,比方说:【$10】
这时候,你直接使用:
1 |
variable1=$10 |
你是拿不到第十个参数的值的。
SHELL会理解成:
1 |
variable1=`echo $1`0 |
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[root@vesta script]# sh 3.sh "啦啦啦" "华晨宇" "挂彩" "流浪地球" "惊奇队长" "祥瑞" "哈喽" "十八" "鲁班七号" "你好" 本次操作的信息 ========================== 服务类型 | 啦啦啦 公司 | 华晨宇 联系人 - 客户 | 挂彩 邮箱 - 客户 | 流浪地球 联系人 - 管理者 | 惊奇队长 变更窗口 | 祥瑞 变更前置天数 | 哈喽 项目编号 | 十八 项目备注 | 鲁班七号 项目状态 | 啦啦啦0 -------------------------- 公司编号 | 客户联系人编号 | 管理者联系人编号 | [root@vesta script]# |
如上显示不正确的部分,在我的代码里,我的变量声明是这样的:
1 |
project_status=$10 |
对于这样的变量应用我们需要增加大括号,表示$10是一个整体:
1 |
project_status=${10} |
再看就没问题了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[root@vesta script]# sh 3.sh "啦啦啦" "华晨宇" "挂彩" "流浪地球" "惊奇队长" "祥瑞" "哈喽" "十八" "鲁班七号" "你好" 本次操作的信息 ========================== 服务类型 | 啦啦啦 公司 | 华晨宇 联系人 - 客户 | 挂彩 邮箱 - 客户 | 流浪地球 联系人 - 管理者 | 惊奇队长 变更窗口 | 祥瑞 变更前置天数 | 哈喽 项目编号 | 十八 项目备注 | 鲁班七号 项目状态 | 你好 -------------------------- 公司编号 | 客户联系人编号 | 管理者联系人编号 | [root@vesta script]# |
————————————————————
Done。