2016-01-08 4 views
0

У меня есть сценарий PERL, как показано ниже: test.plвыполнение системной команды из сценария с помощью PERL су

#!/usr/bin/perl 
system("ls -lart"); 

это работает нормально, но когда я запускаю его, как показано ниже него не удается:

su guest test.pl 

он терпит неудачу на 2-й линии, как показано ниже:

0403-057 Syntax error at line 2 : `(' is not expected. 

ответ

0

Вы должны выполнить его с помощью -c для su. Проблема в том, что если вы запускаете ее так, она должна быть сценарием оболочки. Поэтому вы должны сообщить su, чтобы на самом деле загрузить оболочку, а затем выполнить команду.

Скорее всего

su guest -c test.pl 

будет работать (при условии, что это в командной пути пользователя, конечно).

1

man 1 su От:

OPTIONS 
     The options which apply to the su command are: 

     -c, --command COMMAND 
      Specify a command that will be invoked by the shell using its -c. 

      The executed command will have no controlling terminal. This option cannot be used to execute interractive programs which need a controlling TTY. 

Таким образом, вы должны использовать

su -c "perl /path/to/test.pl --maybe some.options" guest