我有以下bash代码,我想在perl脚本中运行这些代码。作为bash脚本,代码运行时没有任何错误。但在perl脚本中,它给出了错误:bash'at之后的名称不正确/061_rewrite_aws.pl第48行。
system(' 'bash' '-c' <<'END_SHELL_CODE';
AWS_Base="/run/user/1000/gvfs/smb-share:server=192.168.0.205,share=zmd-backup"
pushd /home/zmd/AWS/AWS_DataDirs
cp -R $AWS_Base/* ./
popd
'END_SHELL_CODE' ');
将不胜感激
我认为这行perl中有一些引用错误。
system
将字符串列表作为参数,所以我将引用改为字符串列表。- 现在我认为perl正在解析这一行,并期望
bash
是某个变量的名称
- 现在我认为perl正在解析这一行,并期望
- here-doc的格式设置被关闭了。我认为第一行END_SHELL_CODE之后的
;
,以及最后用单引号括住END_SHELL_CODE
不适用于perl的格式设置,所以我删除了它
这样的东西对我有用:
system('bash', '-c', <<'END_SHELL_CODE'
AWS_Base="/run/user/1000/gvfs/smb-share:server=192.168.0.205,share=zmd-backup"
pushd /home/zmd/AWS/AWS_DataDirs
cp -R $AWS_Base/* ./
popd
END_SHELL_CODE
);