这里已经有一些关于以其他用户身份运行命令的问题。但是,问题和答案集中在单个命令而不是一长串命令上。
例如,考虑以下脚本:
#!/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'
这里有几点需要注意:
最后三个命令必须以另一个用户身份使用
su
or运行sudo
。在示例中,有三个命令,但假设还有更多...命令本身使用单引号和双引号。
上面的第二点禁止使用以下语法:
su somebody -c "command"
...因为命令本身包含引号。
将命令“分组”并在另一个用户帐户下运行它们的正确方法是什么?