【踩坑记录】Shell脚本使用变量

        今天在写Shell脚本的时候,遇见这么一个问题

原始的脚本大意如下:

#!/bin/bash
DATE=$1
echo "文件名=log_$DATE.tar.gz"
exit;

假定参数1为20200422,

此时可以正常输出:文件名=log_20200422.tar.gz

然后我给该脚本增加了 一个变量 FLAG

#!/bin/bash
DATE=$1
FLAG=$2
echo "文件名=log_$DATE_$FLAG.tar.gz"
exit;

假定参数2为A

此时输出为:文件名=log_A.tar.gz

咦,奇怪。第一个变量为啥不见了,明明就是参考着第一个变量的使用方法写的。后面仔细看了shell变量的使用方法教程,才知道

变量名外面的花括号是可选的,加不加都行,但是加花括号是为了帮助解释器识别变量的边界

就比如我遇到的这种情况,如果$DATE不加花括号的话,解释器就无法识别此次使用变量名的边界,导致输出为空。

改为如下即可

#!/bin/bash
DATE=$1
FLAG=$2
echo "文件名=log_${DATE}_$FLAG.tar.gz"
exit;

 

踩的shell小坑,记录一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章