空间无知问题,当传递带有选项(空间包含值)的perl脚本作为参数时。
use strict;
use Getopt::Long;
my $option;
GetOptions(
"myreg=s"=>\$option,
);
print "Option: $option\n";
我有一个shell脚本,当我使用选项(空间包含值)传递perl脚本时,脚本只会在空格之前打印选项值。
/my/test/script.sh /my/testing/test.pl --myreg='Reg 1'
以上执行打印,
Option: Reg
问题是什么?请协助。
答案 0 :(得分:3)
这是因为/my/test/script.sh
执行了不当的转义,这与执行$@
或exec $@
而不是"$@"
或exec "$@"
类似
$ cat ./bad
#!/bin/sh
exec $@
$ ./bad ./test --myreg='Reg 1'
Option: Reg
$ cat ./good
#!/bin/sh
exec "$@"
$ ./good ./test --myreg='Reg 1'
Option: Reg 1