我是bash的新手,嘗試一個簡單的循環,但變量的值在它失去後我無法理解爲什麼 - 我看過幾個類似的問題,但他們都與while循環的子shell執行有關。我沒有做,但仍然面臨問題 - 有人可以解釋我的錯誤在哪裏?bash /變量值在循環後爲空
#!/bin/bash
check_ss()
{
command_list | awk '{print $1 $9}' > ss.out
for i in {1..8}
do grep -Pa "\x3$i" ss.out > ss$i.out
if grep -w "NotStarted" ss$i.out
then
ss$i=0
else
ss$i=1
fi
done
}
check_ss
echo $ss1
echo $ss2
echo $ss3
echo $ss4
我在執行得到這個:
[[email protected] ~]# ./ss.sh
./ss.sh: line 21: ss1=1: command not found
./ss.sh: line 21: ss2=1: command not found
./ss.sh: line 21: ss3=1: command not found
./ss.sh: line 21: ss4=1: command not found
./ss.sh: line 21: ss5=1: command not found
./ss.sh: line 21: ss6=1: command not found
./ss.sh: line 21: ss7=1: command not found
./ss.sh: line 21: ss8=1: command not found
在此先感謝
謝謝,這在某種程度上改變的情況,但腳本仍試圖執行SS1 = 1作爲命令而不是一assinging值給變量SS1:./ss.sh:線11:SS1 = 0:找不到命令 ./ss.sh:第17行:ss1 = 1:找不到命令 –
這些錯誤消息表明您沒有在這些行上使用'declare'。一個簡單的任務*必須*有一個文字作爲LHS;任何參數擴展都需要'declare'命令。 – chepner
謝謝,我做了與聲明 - 現在沒有找到的命令不再出現,但當做echo $ ss1,echo $ ss2輸出爲空,看起來變量值丟失某處 –