Вы можете передавать команды как стандартный ввод в sudo'ed bash с помощью здесь документа :
sudo bash <<"EOF"
whoami
id
EOF
Таким образом, нет необходимости возиться с правильным цитированием, особенно если у вас несколько уровней, например ::10000
sudo bash <<"EOF"
whoami
echo $USER ~
sudo -u apache bash <<"DOF"
whoami
echo $USER ~
DOF
EOF
Производит:
root
root /root
apache
apache /usr/share/httpd
(Обратите внимание, что вы не можете сделать отступ для внутреннего терминатора - он должен быть один на своей строке. Если вы хотите использовать отступ в документе здесь, вы можете использовать <<-
вместо <<
, но тогда вы должен иметь отступ с табуляцией, а не с пробелами.)