我可以在我的 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'
我有一个记录用户参数列表的脚本。此列表稍后由 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'