Shell-Script

echo 萬用字元萬用字元

  • July 24, 2017

我正在嘗試回顯包含我需要“解包”的萬用字元的文本和變數的組合,但我遇到了以下行為:

如果我說:

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 立即將它們帶入標準輸出。

引用自:https://unix.stackexchange.com/questions/381489