将包含值的空格作为perl

时间:2017-03-24 16:22:44

标签: perl

空间无知问题,当传递带有选项(空间包含值)的perl脚本作为参数时。

test.pl

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

问题是什么?请协助。

1 个答案:

答案 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