Я пытаюсь запустить исполняемый файл perl, который копирует каталог в другое место, а затем удаляет каждый файл в этом новом месте, кроме тех, которые заканчиваются на .faa и .tsv. Вот код:sh: 1: Ошибка синтаксиса: «(« неожиданно
#!/usr/bin/perl
use strict;
use warnings;
my $folder = $ARGV[0];
system ("cp -r ~/directoryA/$folder/ ~/directoryB/");
chdir "~/directoryB/$folder";
# Remove everything except for .faa and .tsv files
system ("rm !\(*.faa|*.tsv\)");
Независимо от того, убегаю ли не круглые скобки, я получаю ошибку:.
sh: 1: Syntax error: "(" unexpected
и не удалит файлы, расположение файла PERL составляет ~/bin, и я хотел бы избежать изменения строки #!/usr/bin/perl, поскольку несколько компьютеров будут использовать этот скрипт. Это немного больше, чем я знаю, поскольку я знаю только основные сценарии, но кто-нибудь знает, почему это происходит?
Всегда интересно, почему кто-то завернуть 3 строки сценария оболочки в 8 строк Perl, без каких-либо функциональных возможностей плюс ... – jm666
Для запуска, я типа: perlfile.pl папку perfile.pl находится в папке bin, которую я сделал. – tkidder
Сам код Perl является синтаксически правильным. Сообщение об ошибке синтаксиса выводится из оболочки, вызываемой вторым вызовом 'system'. Строка, передаваемая оболочке в виде команды, является '' rm! (*. Faa | * .tsv) ". Что вы ожидали от оболочки? Команда 'rm' не распознает'! 'Или круглые скобки как специальные символы. –