如何在perl脚本中运行run bash代码



我有以下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中有一些引用错误。

  1. system将字符串列表作为参数,所以我将引用改为字符串列表。
    • 现在我认为perl正在解析这一行,并期望bash是某个变量的名称
  2. 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
);

最新更新