2017-01-10 13 views
-2

У меня есть сценарий оболочки, который содержит некоторые функции в нем. Одна из этих функций должна выполняться через perl. Функции perl проверяют, открыт ли порт на удаленном сервере или нет .Синтаксическая ошибка: `('неожиданно в сценарии оболочки

#!/usr/bin/ksh 

function1 
function2 
telnet_check() 
{ 

#!/usr/bin/perl -w 

use IO::Socket; 
use IO::Socket::INET; 

my ($host,$port); 
$host=Ip address ; 
$port=9443; 
my $sock=IO::Socket::INET->new("Ip address:$port") or die "" ; 

} 

some shell commands 

при выполнении этого скрипта, я получаю ошибку

syntax error at line: `(' unexpected [which falls in the line my ($host,$port); under the Perl function] 

может ли один помочь то, что можно сделать, чтобы исправить вышеуказанную ошибку.

Приветствия заранее :)

+3

Создайте отдельный файл, который имеет только код Perl, а затем запустите скрипт Perl из вашего сценария оболочки. – toolic

+0

Hey @toolic Я уже так пробовал, и он работает. Но я хочу поместить его в один скрипт. Может ли это быть достигнуто? –

ответ

3

Вы не можете легко переключаться с ksh на Perl. Либо, цитирую сценарий и передать его в качестве параметра для языка Perl -e:

perl -MIO::Socket -MIO::Socket::INET -we 'my ($host, $port) = qw(host.name 9443); ...' 

или сохранить скрипт на языке Perl в файл самостоятельно, и запустить его:

perl /path/to/the/script.pl 

или отправить сценарий для stdin perl - работает только в том случае, если вам не нужно читать ввод внутри скрипта.

cat <<'EOF' | perl 
use IO::Socket; 
use IO::Socket::INET; 
... 
EOF 
+0

Я получаю ошибку при попытке последним способом. синтаксическая ошибка в строке 10: '<< 'unmatched –

+0

@Su_scriptingbee: Вы уверены, что закрытие' EOF' остается на линии, т. е. нет пробелов? – choroba

+0

Между EOF и закрывающей скобой было пространство. Я исправил его сейчас, и он отлично работает :) Большое спасибо –

Смежные вопросы