Shell变量赋值语句不能有空格

iamlaosong文

前两天编一个shell脚本犯了一个低级错误,给变量赋值时加了空格(时间长了,规则都忘了),结果导致变量没有赋值,无法完成预定的功能。因为是一个定时执行的脚本,又是用一个老脚本改的,也就没有测试,结果没有发现这个错误,几天后检查时才发现了问题。教训就是:1、工作要认真认真再认真;2、再小的改动也要测试一下。

1、shell脚本变量名和等号及等号和值之间不能有空格,这可能和我们熟悉的所有编程语言都不一样,变量命名须遵循如下规则:
•首个字符必须为字母(a-z,A-Z)。
•中间不能有空格,可以使用下划线(_)。
•不能使用标点符号。
•不能使用bash里的关键字(可用help命令查看保留关键字)。

赋值语句等号两边不能有空格,中间有空格时,shell是把变量当一个命令执行的,如:

PROV = anhui

执行时会提示:./tt.sh: line 14: PROV: command not found

正确的写法是:

PROV=anhui

如果所赋的值包含空格,可以用引号括起来(没有空格时也可以用引号,效果和不用一样),例如:

PROV="anhui province"

2、变量的引用是用$符号加上变量名,例如:

echo  ../${PROV}/${DATDIR}

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,建议给所有变量加上花括号,这是个好习惯,既便于阅读,又不易出错。 

最后想说明一下,shell脚本对空格有严格的规定,赋值语句等号两边不能有空格,而字符串比较,等号两边必须有空格,如:

if [ "${sdpt}" = "sdpt_js" ]; then


  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值