我可以在我的 Bash 脚本中获取围绕参数的原始引号字符吗?

Can I get the original quote characters surrounding arguments in my Bash script?

我有一个记录用户参数列表的脚本。此列表稍后由 getopt 处理。

如果脚本像这样启动:

./script.sh -a 'this is a sentence' -b 1

... 然后我保存 "$@",我得到:

-a this is a sentence -b 1

... 没有单引号。我认为(由于 Bash 处理引号的方式)这些已被删除并且不可用于脚本。

为了记录的准确性,我也想包括引号。

是否可以在不需要引用的情况下获得原始参数列表?

不,无法从 shell 对其执行空格标记化、通配符扩展和引号删除之前获取命令行。

如果你想传递文字引号,试试

./script.sh '"-a"' '"this is a sentence"' '"-b"' '"1"'

另请注意您的原始命令行可能是如何编写的

'./script.sh' '-a' 'this is a sentence' '-b' '1'