2012-02-13 146 views
1

當我讀取[命令]一些行時,包括字符'*',看起來'*'將被視爲通配符。是否存在一些解決方案'*'只是一個'*',請!在bash中讀取[命令]

回答

0

如果您不希望將任何特殊文件名稱字符用作通配符,請在讀取之前在腳本中輸入以下內容。

set -o noglob

這將防止*?和[]具有特殊含義並將它們視爲正常字符。

下面的例子說明了這一點

touch 1 2 3 
echo "With wild card expansion" 
echo * 

echo "Without wild card expansion" 
set -o noglob 
echo * 
 
And produces the following results 

With wild card expansion 
1 2 3 
Without wild card expansion 
* 
0

您可以使用轉義字符轉義它:\*。這意味着*將是一個文字*,不匹配一個或多個字符作爲glob模式。

+0

如果什麼樣的「\ t \ ABC \ o * \ ABCDEFG」 – SnailTang 2012-02-13 10:49:03

1

這取決於你如何使用變量:如果你引用它,文件名擴展不會發生。例如:

$ ls 
f1 f2 f3 
$ read line 
* 
$ echo "$line" 
* 
$ echo $line 
f1 f2 f3 
+0

謝謝,我發現使用報價爲第一點的問題,但不是第二,這不是關於[讀取一行] – SnailTang 2012-02-14 09:20:28