如何防止bash函数参数被扩展

时间:2012-10-25 23:04:42

标签: bash unix

我有一个像以下一样的bash函数:

foo() {
    echo $1
}

bar() {
    baz $1
}

如果我再拨打foo 'file[1-3]',则结果为file1 file2 file3,而不是file[1-3]。将参数传递给另一个bash函数(如函数bar)的调用时会发生类似现象。除了确保当前目录中没有匹配的文件以便在回显或将参数传递给另一个函数时引用该参数,最简单的方法是什么?

编辑:字符串匹配似乎没有扩展glob。在内部调用另一个函数时执行字符串匹配时,我的具体问题就出现了。这是对其他功能的调用,似乎扩大了模式。

2 个答案:

答案 0 :(得分:1)

将其插入到脚本的顶部:

set -o noglob

答案 1 :(得分:1)

用双引号括起$ 1,即

echo "$1"

因为双引号内不会发生globbing / filename扩展。