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