我有一個更大的腳本,但這種較小的顯示問題:爲什麼這個變量沒有被改變?
#!/bin/bash
x=0
if [[ $x == 0 ]]
then
ls | while read L
do
x=5
echo "this is a file $L and this is now set to five --> $x"
done
fi
echo "this should NOT be 0 --> $x"
如果變量被設置在while循環之外,那麼它可以作爲我的期望。 bash版本是3.2.25(1) - 釋放(x86_64-redhat-linux-gnu)。如果這是顯而易見的事情,我會覺得很蠢。
這是一個常見的問題。閱讀常見問題:http://mywiki.wooledge.org/BashFAQ/024 –
另一個偉大的鏈接:[爲什麼你不應該解析ls的輸出](http://mywiki.wooledge.org/ParsingLs) –
選擇類似線程:http://stackoverflow.com/questions/13233452/bash-variable-change-doesnt-persist。 – konsolebox