1. 程式人生 > 其它 >Shell的兩個知識點引發的思考:關於"="的使用

Shell的兩個知識點引發的思考:關於"="的使用

#!/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",可以理解為第二次賦值時,重新定義了一個名字一樣的變數,把之前的變數名及內容完全覆蓋了,是一個嶄新的變數。