如何在 bash 中禁用路径名扩展?

如何在 bash 中禁用路径名扩展?

假设我是一个懒人,在向函数传递参数时想避免将每个字符串放在引号中,我该如何避免这些字符*?bash 用于 patname 扩展?

简化示例:

fn () {
    echo "$1"
}
# shopt -s option - disable * and ?
fn not/*/expanded
fn neither\ should\ this/be/expanded?
fn 'accepted too*'
# shopt -u option - enable * and ?

这应该输出:

not/*/expanded
neither should this/be/expanded?
accepted too*

答案1

您正在寻找的选项是noglob并且应该使用 shell 内置的进行设置set

要启用它:

set -o noglob

要禁用它:

set +o noglob

或者也可以使用set -fset +f

还有一种方法:

shopt -os noglob

shopt -ou noglob

相关内容