Назад | Перейти на главную страницу

Почему моя команда оболочки не работает?

У меня есть сценарий оболочки, над которым я работаю, который использует pssh для получения идентификатора пользователя на удаленном сервере:

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

Файл users.txt содержит одну строку

mikeghen

Когда я запускаю свой скрипт, я получаю сообщение об ошибке:

[1] 14:23:15 [FAILURE] server.mike.com Exited with error code 1\

Но когда я запускаю команду:

runuser -l mike -c 'pssh -H server.mike.com -o /home/mike/output id -u mikeghen'

Я не получаю сообщения об ошибке:

[1] 13:11:53 [SUCCESS] server.mike.com

Я чувствую, что это как-то связано с вопросом, который я задавал раньше, Почему во время pssh отказано в разрешении?, поэтому я безуспешно пытался заключить свою команду в кавычки. Какие-либо предложения?

В '' кавычки предотвращают интерполяцию переменных. Использовать "" вместо.

host:~ sven$ echo $USER
sven
host:~ sven$ echo '$USER'
$USER
host:~ sven$ echo "$USER"
sven