在bash中读取[command]

时间:2012-02-13 10:34:51

标签: linux shell

当我阅读[command]某些行(包括字符'*')时,似乎'*'将被视为通配符。是否存在某些解决方案'*'只是'*',请!

3 个答案:

答案 0 :(得分:1)

这取决于你如何使用变量:如果引用它,文件名扩展将不会发生。例如:

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

答案 1 :(得分:0)

您可以使用转义字符\*来转义它。这意味着*将是文字*,不匹配一个或多个字符作为glob模式。

答案 2 :(得分: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
*