如何在Bash中执行一组命令作为另一个用户?

前端之家收集整理的这篇文章主要介绍了如何在Bash中执行一组命令作为另一个用户?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这里已经 some existing questions询问了作为另一个用户运行命令。但是,问题和答案集中在单个命令,而不是一大组命令。

例如,考虑以下脚本:

#!/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"

…因为命令本身包含引号。

什么是正确的方式“组”命令,并在另一个用户帐户下运行它们?

尝试这个:
su somebody <<'EOF'
command1 -p 'parameter with "quotes" inline'
command2 -p 'parameter with "quotes" inline'
command3 -p 'parameter with "quotes" inline'
EOF

<<介绍一个here-doc。下一个标记是分隔符,并且以分隔符开头的行的所有内容都作为标准输入提供给命令。将定界符放在单引号中会阻止在here-doc中进行变量替换。

猜你在找的Bash相关文章