你需要输出变量以及其他文本。引用变量要用到 $,但是该怎么区分变量名与紧随其后的其他文本呢?例如,你想要用 shell 变量作为文件名的一部分。
for FN in 1 2 3 4 5
do
somescript /tmp/rep$FNport.txt
done
shell 会怎么理解这段代码?它会认为变量名从 $ 开始,到点号结束。换句话说,它将 $FNport
视为变量名,而非我们想要的 $FN
。
解决方案
使用完整的变量引用语法,不仅要包括 $,还要在变量名周围加上花括号。
somescript /tmp/rep${FN}port.txt
讨论
因为 shell 变量名中只能包含字母、数字以及下划线,所以很多时候并不需要使用花括号。任何空白字符或标点符号(下划线除外)都足以提示变量名的结束位置。但只要有疑问,就应该用花括号。
实际上,有人认为坚持使用花括号是一种好习惯,这样就不用考虑什么时候该用,什么时候不用,还能在整个脚本中保持写法一致。也有人觉得这样需要敲入的可用可不用的字符太多了,不但不好输入,还会让代码看起来很繁杂。说到底,这还是个人喜好问题。
酷客网相关文章:
评论前必须登录!
注册