Shell的兩個知識點引發的思考:關於"="的使用
阿新 • • 發佈:2021-08-17
#!/bin/bash
name="Enming"
if [ $name = "Enming" ]
then
echo "Hello $name !"
fi
在學習Shell關於“條件測試”的知識時提到,“等於”是用一個等號( = )來表示的(用兩個等號來表示“等於”的判斷也是可以的),用於比較兩個字串是否相等,但是納悶的是,賦值也是用“=”,這樣不是衝突了嗎?
直到發現了這個知識點:
--已定義的變數,可以被重新定義 your_name="tom" echo $your_name your_name="alibaba" echo $your_name # 注意,第二次賦值的時候不能寫$your_name="alibaba",使用變數的時候才加美元符($)
可以發現,“=”用做賦值功能時,前面是一個不帶美元符($)的變數名,如:your_name="tom";
用做比較功能時,前面跟的就不能是一個不帶美元符($)的變數名了,可能是一個被定義過的已知變數,如$name = "Enming",也可能是一個帶雙引號的常量。
再提一點,提到的第二次賦值的時候不能寫$your_name="alibaba",可以理解為第二次賦值時,重新定義了一個名字一樣的變數,把之前的變數名及內容完全覆蓋了,是一個嶄新的變數。