Как запустить код bash в скрипте perl - PullRequest
0 голосов
/ 01 мая 2020

У меня есть следующий код bash, который я хочу запустить в скрипте perl. Как скрипт bash код выполняется без ошибок. Но в скрипте perl выдает ошибку: Неверное имя после bash 'в строке ./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' ');

Помощь будет оценена

1 Ответ

2 голосов
/ 01 мая 2020

Я думаю, что есть только некоторые ошибки цитирования с этой строкой perl.

  1. system принимает список строк в качестве аргументов, поэтому я изменил это цитирование на список строк.
    • Прямо сейчас я думаю, что perl анализирует эту строку и ожидает, что bash будет именем некоторой переменной.
  2. Текущее форматирование c был выключен. Я думаю, что ; после 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
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...