今天在寫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小坑,記錄一下。