我正在學習for回圈。這是我的代碼:
#!/bin/bash
# states list
states=('New York' 'Arizona' 'Texas')
# script to check which state is cool.
for state in ${states[@]}
do
if [ $state = 'New York' ]
then
echo 'New York is cool'
else
echo 'Arizona rocks'
fi
done
這是我運行它時的輸出:
Arizona rocks
Arizona rocks
Arizona rocks
Arizona rocks
為什么它輸出 4 次,而且答案也是錯誤的?
uj5u.com熱心網友回復:
嘗試這個:
#!/bin/bash
# states list
states=('New York' 'Arizona' 'Texas')
# script to check which state is cool.
for state in "${states[@]}"
do
if [[ "$state" == 'New York' ]]
then
echo 'New York is cool'
else
echo 'Arizona rocks'
fi
done
我所做的修改是:
for state in "${states[@]}": 雙引號很關鍵,因為你有一個帶空格的陣列元素。您的代碼在 4 個專案上回圈:
New York Arizona Texas我將您的 if 陳述句修改為
if [[ "$state" == 'New York' ]].$state如果其中有空格,則雙引號可確保您正確處理該值。任何變數都應該在" ".要除錯這些東西,請
echo "$state"在for回圈中添加以查看它在做什么。
uj5u.com熱心網友回復:
#!/bin/bash
# states list
states=("New York" "Arizona" "Texas")
# script to check which state is cool.
for state in "${states[@]}"
do
if [ "$state" = "New York" ]
then
echo "New York is cool"
else
echo "Arizona rocks"
fi
done
這行得通
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/438473.html
上一篇:如何在向量c 中找到唯一值
下一篇:按鍵對多維陣列進行分組
