当我在双引号内使用单引号时,有一些有趣的行为compgen -W
(看看最后一个参数和输出如何因命令而异):
$ compgen -W "a\'b1 a\'b2" -- "a'"
a'b1
a'b2
$ compgen -W "a\'b1 a\'b2" -- "a'b"
$ compgen -W "a\'b1 a\'b2" -- "a\'b"
a'b1
a'b2
为什么第三个命令需要 a \
before a'
才能获得完成选项,而第一个命令不需要?在调试我的完成脚本时,我花了几个小时才发现这个事实。这是一个错误,还是有任何解释为什么它必须以这种方式工作?