Помилка синтаксису Рядок джерела дорівнює 1


-1

У мене є список серверів у файлі списку хостів, і я намагаюся виконати нижче сценарій:

#!/bin/bash
for server in `cat hostlist`; do
ssh $server 'hostname ;id $(cat /etc/passwd | grep Luyang | awk -F '[:]' '{print $1}') ; id  ppandey' >> b
done

Я хочу отримати результати для команди id користувача Luyang. Для того ж я вже згадував, id $(cat /etc/passwd | grep Luyang | awk -F '[:]' '{print $1}')але я отримую помилки під час запуску сценарію.

Я також намагався поставити "\" перед усіма спеціальними персонажами, але не пощастило.


1
Яку фактичну помилку ви отримуєте?
Ƭᴇcʜιᴇ007

2
Спробуйте поставити "замість" перед іменем хоста і в кінці. Оскільки ви використовуєте інші, всередині нього це закриває ....
Gopoi

Відповіді:


1

Ви повинні перевірити в посібнику оболонки, як працює ескадування / цитування. А також вивчіть особливості awk, просто для простоти, яка, як правило, призводить до читабельності, крім швидкості.

Це може допомогти:

ssh yourhost "hostname ;id \$( awk -F: '/Luyang/ {print \$1}' /etc/passwd)"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.