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

齐洛尔·蒙巴

我有以下 bash 代码,我想在 perl 脚本中运行它。作为 bash 脚本,代码运行时没有任何错误。但是在 perl 脚本中,它给出了错误:./061_rewrite_aws.pl 第 48 行 bash' 后的名称错误。

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
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章