對我來說,它的工作:
diretorio=$(echo 'test 123'*)
但不是當我用引號
Var2="test 123"
diretorio=$(echo '$Var2'*)
變量如何解決它的工作?
對我來說,它的工作:
diretorio=$(echo 'test 123'*)
但不是當我用引號
Var2="test 123"
diretorio=$(echo '$Var2'*)
變量如何解決它的工作?
我可以建議替代方案嗎? ACH?而不是使文件名的空格分隔的列表(這將導致可怕的混亂,如果任何文件名包含空格,如「測試123」),使用數組:
diretorio=("${Var2}"*)
doSomethingWithAllFiles "${diretorio[@]}"
for umDiretorio in "${diretorio[@]}"; do
doSomethingWithASingleFile "$umDiretorio"
done
這個錯誤在你glob是
diretorio=$(echo '$Var2'*)
是/dev/null
了一槍,因爲外殼不擴大在單引號中的變量。
所以:
diretorio=$(echo "$Var2"*)
學習「和」和'之間的區別見http://mywiki.wooledge.org/Quotes和http://wiki.bash-hackers.org/syntax/words
使用雙引號:
diretorio=$(echo "$Var2"*)
單身者防止變量替換
已經說過;) – 2013-03-14 22:54:37
@sputnick確實,雖然在我寫回復時還沒有傳播到我的瀏覽器。 – jlliagre 2013-03-14 23:01:56
對不起 - 這是我不清楚你想要實現。 – suspectus 2013-03-14 22:51:23
爲什麼在第一個地方你將一個連接的文件名列表放入一個變量中? – ormaaj 2013-03-15 00:00:23
另一個有趣的混亂:'a =「*」; echo $ a;一個= 「 '*'」; echo $ a' - 沒有簡單的方法來禁用通配符擴展而不會引入其他問題,請考慮'if [-n「$ 1」];那麼a =「 - name $ 1」; fi; find/dir $ a'(Arrays也適用於這種情況......) – 2016-06-17 07:03:45