2
當試圖將變量賦值給另一個變量時,出現了奇怪的錯誤。初始變量值在開始和結束時包含'
標誌。KornShell中的變量賦值
下面是代碼:
server = $(uname -n)
passpre = "'HPre2053#'"
passmon = "'MonH2053#'"
mdp=""
echo ${server}
if [[ "$server" = "cly1024" ]];
then
echo "Dentro Pre"
mdp = $(passpre)
echo $mdp
logit "Exécution du script sur Pre. Mot de passe choisi."
elif [[ "$server" = "pcy4086" ]];
then
echo "Dentro MON"
mdp = ${passmon}
logit "Exécution du script sur MON. Mot de passe choisi."
fi
代碼錯誤:
cly1024
Dentro Pre
modMDPconfig.ksh[51]: passpre: not found
modMDPconfig.ksh[51]: mdp: not found
51行是我做的可變分配mdp = $(passpre)
'MDP = $(passpre)'是不是做的任務都沒有。它使用第一個參數'='運行一個命令'mdp',第二個命令運行'passpre'的輸出作爲命令。鑑於此,它給出的錯誤信息完全是對問題的描述。 –
請注意,順便說一句,quotes-as-data(在'「'foo'」中,'''引號是數據,'''引號是語法)永遠不能代替語法引號。你做一個參數擴展,數據**總是**保留數據 - 除非你通過評估階段明確地運行這些數據,否則它不能變成語法,出於安全原因,這樣做是非常糟糕的形式。 –
A 'sh' family **中的變量賦值**必須由包含一個'='符號的單個字符串組成,在左側必須是有效的變量名稱(字母數字+下劃線),右側可以包含任何內容,但空白必須加引號,'''''''''和'''''''引用的正常區別適用。 –