2013-07-22 2 views
0

Я пытаюсь написать приложение для пароля пользователя системы Linux.

Вот код для этого:

shell_exec("/usr/bin/passwd ".$user." <<EOF\n".$password."\n".$password."\nEOF");

Он принимает все пространственные символы принимают "$"

Как передать "$" в shell_exec?

Заранее спасибо.

ответ

2

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

shell_exec('/usr/bin/passwd $'.$user." <<EOF\n".$password."\n".$password."\nEOF"); 

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

$arg = $user." <<EOF\n".$password."\n".$password."\nEOF"; 
shell_exec('usr/bin/passwd ' . $arg); 
+0

'shell_exec ('/ USR/бен/PASSWD $' $ пользователя "<< EOF \ п" $ пароль "\ п" $ пароль. "\ nEOF"); 'Это не работает. –

+0

Что не работает? вы пытаетесь изменить пароль пользователя, а затем пропустили текущий пароль, – DevZer0

+0

Попробуйте изменить пароль пользователя Linux с помощью $ password = "test $ 123", а затем отметьте –

0

Я не думаю, что ошибка связана с $ символом. Код, похожий на ваш, работал отлично для меня.

Я использовал следующее испытание:.....

$msg = "Hello world"; shell_exec("notify-send ".$msg); 
+0

Попробуйте изменить пароль пользователя Linux с помощью $ password = "test $ 123", а затем отметьте –

+0

Не уверен, что я понял, что вы сказали, но это: '$ msg =" Hello $ world "; shell_exec ("notify-send". $ msg); 'работал. – xou816

+0

Я пробовал следующий скрипт: '$ user = 'test'; $ pass = 'test $ a'; echo $ pass; $ arg = $ user. "<< EOF \ n". $ Pass. "\ N". $ Pass. "\ NEOF"; \t \t \t shell_exec ('/ usr/bin/passwd'. $ Arg); 'Но это не сработает. –

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