ip="192.168.1.1"
if [ -n "$(ip = 192.168.1.1)" ];
then
IPADDR=$(ip addr show |grep 'inet '|grep -v 127.0.0.1 |awk '{print $2}'| cut -d/ -f1)
else
"${ip}"="${IPADDR}"
fi
echo "${IPADDR}"
我試圖分配ip="192.168.1.1"給變數IPADDR
我收到 atm 的錯誤是物件“=”未知,請嘗試“ip help”。./test: line 7: 192.168.1.1=: 命令未找到
uj5u.com熱心網友回復:
這里 ...
if [ -n "$(ip = 192.168.1.1)" ];
...您正在執行命令 ip,傳遞引數=和192.168.1.1,并捕獲其標準輸出。這些不是該命令的有效引數,因此ip會向其標準錯誤發出錯誤訊息,但不會向其標準輸出發出任何資訊。
該測驗[ -n "$(ip = 192.168.1.1)" ]評估捕獲的輸出是否為非空,因此該測驗失敗,因此else執行該塊。這里 ...
"${ip}"="${IPADDR}"
... 不是變數賦值而是命令,因為左邊的文本=不是(只是)識別符號。該IPADDR變數未設定或設定為null,使膨脹到192.168.1.1=。shell 報告沒有該名稱的命令。
很難確定你真正想要完成什么,但是按照問題標題,如果你想給一個變數賦值,那么語法是
variable_name=value
的variable_name必須是一個識別符號。在value您看來什么是試圖做的是受到擴展和參考的洗掉,而不是詞的拆分,所以無論這些會為作業
ip="${IPADDR}"
或者
ip=${IPADDR}
. 話雖如此,代碼沒有意義,因為它IPADDR在嘗試賦值之前沒有為變數賦值。
早些時候,你的意思可能是
if [ "$ip" != 192.168.1.1 ]
... 測驗$ip被視為字串的 variable 的值是否等于 string 192.168.1.1。然而,即便如此,代碼總體上也沒有意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/347825.html
