有没有办法告诉bash/zsh不要解析引号,而是直接将它们原封不动地传递给shell函数?
你可能会想,为什么我不直接执行…
$ argtest abc def "ghi jkl" $'mno\tpqr' $'stu\nvwx'
abc
def
"ghi jkl"
$'mno\tpqr'
$'stu\nvwx'
你可能会想,为什么我不直接执行…
argtest abc def '"ghi jkl"' "$'mno\tpqr'" "$'stu\nvwx'"
但是我试图创建的argtest
函数尝试包装其他可能具有noglob
前缀的命令。因此,我需要一种能够区分*
和'*'
的方法。
noglob
如何与此相关吗? - chepner*
和'*'
的情况下,通常的方法是检查文件是否存在。如果存在,则将其视为全局扩展;如果不存在,则报告失败,假定它是一个无法扩展的错误全局。或者,要求调用者使用shopt -s nullglob
并完全禁用未扩展的全局传递。 - Charles Duffy