Ci sono già some existing questions qui richiesti sull'esecuzione di comandi come un altro utente. Tuttavia, la domanda e le risposte si concentrano su un singolo comando invece di un lungo gruppo di comandi.Come eseguire un gruppo di comandi come un altro utente in Bash?
Ad esempio, si consideri il seguente script:
#!/bin/bash
set -e
root_command -p param1 # run as root
# these commands must be run as another user
command1 -p 'parameter with "quotes" inline'
command2 -p 'parameter with "quotes" inline'
command3 -p 'parameter with "quotes" inline'
ci sono un paio di punti importanti da notare qui:
I tre comandi finali deve essere eseguito come un altro utente che utilizza
su
osudo
. Nell'esempio c'erano tre comandi, ma supponiamo che ce ne fossero molti altri ...I comandi stessi fanno uso di virgolette singole e doppie.
Il secondo punto sopra impedisce l'uso della seguente sintassi:
su somebody -c "command"
... poiché i comandi stessi contengono virgolette.
Qual è il modo corretto di "raggruppare" i comandi ed eseguirli con un altro account utente?
Qualche fortuna su Unix stackexchange? – icedwater
Vedi anche ora http://stackoverflow.com/questions/37586811/pass-commands-as-input-to-another-command-su-ssh-sh-etc/37586820#37586820 – tripleee