Shell-Script
echo 萬用字元萬用字元
我正在嘗試回顯包含我需要“解包”的萬用字元的文本和變數的組合,但我遇到了以下行為:
如果我說:
FILENAME=somefile*.txt echo "something:" $FILENAME
我得到:
something: somefile003.txt
這就是我想要的,但如果我說: 如果我說:
FILENAME=somefile*.txt echo "something:"$FILENAME
我得到:
something:somefile*.txt
所以看起來如果引號和變數之間沒有空格,它就不會萬用字元。有沒有辦法讓它在不添加空格的情況下處理 *?
您可以將 glob 放入一個數組中,因此
FILENAMES=(somefile*.txt)
並像這樣引用第一個元素
echo "something:${FILENAMES[0]}"
或者他們都喜歡這樣
echo "somethings:${FILENAMES[@]}"
我強烈建議您在使用變數時“雙引號”。這樣可以避免它們意外地擴展為多個單詞。
嘗試像這樣定義你的變數:
FILENAME=\ somefile*.txt; # that is, with a leading space ... and then echo "something:"$FILENAME;
這將變數插值到…某物:somefile*.txt
然後這將萬用字元擴展為…某事:somefile003.txt
然後將這兩個參數傳遞給 echo , echo 立即將它們帶入標準輸出。