已经有some existing questions在这里询问有关以另一个用户身份运行命令的问题。但是,问题和答案集中在单个命令而不是一长串命令。如何在Bash中以另一个用户身份执行一组命令?
例如,请考虑下面的脚本:
#!/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'
有几个重要的点,这里要注意:
最后3个命令都必须使用
su
或运行其他用户身份sudo
。在这个例子中有三个命令,但假设还有更多...这些命令本身使用单引号和双引号。上述
第二点阻止使用以下语法的:
su somebody -c "command"
...由于命令本身包含引号。
“分组”命令并在另一个用户帐户下运行命令的正确方法是什么?
Unix stackexchange上运气不错吗? – icedwater
现在请参阅http://stackoverflow.com/questions/37586811/pass-commands-as-input-to-another-command-su-ssh-sh-etc/37586820#37586820 – tripleee