Команда sudo -S -i
считывает пароль и команды из стандартного ввода.
В echo -e "MYPASSWORD\n" | sudo -S -i
стандартном вводе используется канал, который возвращает новую строку, а затем конец файла после прочтения пароля: остальные команды выполняются в обычной оболочке.
Есть несколько способов обойти: что ближе всего к тому, что вы кодировали, так это использовать здесь документ :
sudo -S -i <<EOF MYPASSWORD cd /home/www/argentium.ru git checkout HEAD~3 EOF
Кроме того, вы можете добавить все команды в поток ввода: -
echo -e "MYPASSWORD\ncd /home/www/argentium.ru\ngit checkout HEAD~3" | sudo -S -i
Обратите внимание, что я проверил это на обычной bash
оболочке, так как у меня нет настройки, с которой я мог бы легко протестировать plink
.