假设我是一个懒人,在向函数传递参数时想避免将每个字符串放在引号中,我该如何避免这些字符*
被?
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 -f
和set +f
。
还有一种方法:
shopt -os noglob
和
shopt -ou noglob