我正在嘗試檢查從 workdir 中的模式開始的所有填充是否存在,然后如果它們存在則將它們全部洗掉:
target='file_pattern_to_be_removed'
if [ -e "${workdir}"/${target}*.dat ]; then rm "${workdir}"/${target}*.dat; fi
產生
./test.sh: line 482: [: too many arguments
假設在 workdir 中總共有 10 個填充從模式開始,如何更好地執行這種條件?
uj5u.com熱心網友回復:
[ -e ... ]無法處理多個引數,但您實際上不必檢查: with
shopt -s nullglob
rm -f "$workdir/$target"*.dat
如果匹配,則洗掉檔案,如果不匹配,則不會發生任何事情。設定了nullglobshell 選項,因此如果沒有匹配項,則 glob 將擴展為空字串(否則它將嘗試洗掉包含文字的檔案*),并且-f如果沒有要洗掉的內容,該選項會抑制有關丟失檔案的警告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/517983.html
