我试图执行.VB
脚本以及其他一些参数。
我正在呼叫system("$cmd")
,其中
my $cmd = "Report.exe $app_env $rpt_Dir $eff_date";
和
my $rpt_Dir = "\\\\server\\folder\\Target Report\\test";
我遇到的问题是(我认为)"Target Report"
之间的空格使得脚本将其视为2个参数。
我之所以没有用#34;"并将其作为参数传递而不是将其保存到变量,即路径根据日期而变化。
这不是我在.VB
脚本中更改代码的第一选择。
答案 0 :(得分:1)
您可以将一组参数传递给system
。如果你这样做,你就不会被报价插值绊倒。
awk -F '[ :]' '{f = $3 ".txt"; print > f}' input.txt
答案 1 :(得分:1)
在Windows上,system
调用使用cmd.exe
来处理命令,因此您需要在包含空格的任何参数周围使用双引号
像这样设置$cmd
my $cmd = qq{Report.exe $app_env "$rpt_Dir" $eff_date};
qq{...}
构造与普通的双引号相同,但它允许您选择自己的分隔符,这样您就不必转义任何嵌入的双引号
然后你可以写
system($cmd);
在单个标量变量周围加上引号是错误的
答案 2 :(得分:0)
您只需将$rpt_Dir
变量括在单引号中即可:
my $cmd = "Report.exe $app_env '$rpt_Dir' $eff_date";
它将被视为一个单一的争论