为什么我的 shell 命令不起作用?

Mik*_*ike 0 linux ssh shell-scripting

我有一个我正在处理的 shell 脚本,它使用 pssh 来获取远程服务器上用户的用户 ID:

for USER in $(cat users.txt); do
    runuser -l mike -c 'pssh -H server.mike.com -o /home/mike/output id -u $USER'
    cat /home/mike/output/server.mike.com
Run Code Online (Sandbox Code Playgroud)

文件 users.txt 包含一行

mikeghen
Run Code Online (Sandbox Code Playgroud)

当我运行我的脚本时,我收到一个错误:

[1] 14:23:15 [FAILURE] server.mike.com Exited with error code 1\
Run Code Online (Sandbox Code Playgroud)

但是,当我运行命令时:

runuser -l mike -c 'pssh -H server.mike.com -o /home/mike/output id -u mikeghen'
Run Code Online (Sandbox Code Playgroud)

我没有得到错误:

[1] 13:11:53 [SUCCESS] server.mike.com
Run Code Online (Sandbox Code Playgroud)

我觉得这与我之前问过的一个问题有关,为什么在 pssh 期间权限被拒绝?,所以我尝试将我的命令用引号括起来,但没有运气。有什么建议?

Sve*_*ven 6

''报价防止可变插值。使用""来代替。

host:~ sven$ echo $USER
sven
host:~ sven$ echo '$USER'
$USER
host:~ sven$ echo "$USER"
sven
Run Code Online (Sandbox Code Playgroud)