我有一个记录用户参数列表的脚本。此列表稍后由getopt
处理。
如果脚本是这样启动的:
./script.sh -a 'this is a sentence' -b 1
...然后保存"$@"
,我得到:
-a this is a sentence -b 1
...不带单引号。我认为(由于Bash处理引号的方式)将这些引号删除,并且脚本不可用。
为了记录的准确性,我也想包括引号。
是否可以在不使用引号的情况下获得原始参数列表?
答案 0 :(得分:3)
不,在外壳程序对其执行空格标记化,通配符扩展和引号除去之前,无法获得命令行。
如果要传递文字引号,请尝试
./script.sh '"-a"' '"this is a sentence"' '"-b"' '"1"'
还请注意如何编写原始命令行
'./script.sh' '-a' 'this is a sentence' '-b' '1'