Awk не работает когда в двойных кавычках

Эта команда не работает:

ssh $HOST "ls -l | awk '{print $1}'"`

Выше игнорирует команду awk. Я думаю, что это могло бы быть из-за двойных кавычек?

Кроме того, как я добавил бы другой набор двойных кавычек в awk?

т.е.:

ssh $HOST "awk '{print $1 "*"}' /some_file"

Я пытался выйти из кавычек, я даже попробовал это:

ssh $HOST "awk '{print $1 "\""*"\""}' /some_file"

без успеха.

11
задан 02.03.2015, 17:35

1 ответ

Интерполяция переменной выполняется в двойных кавычках, таким образом, вот то, что я думаю, мог бы происходить: когда Вы вводите ssh $HOST "ls -l | awk '{print $1}'", Ваша оболочка (та на Вашем локальном компьютере, куда Вы выполняете клиент SSH) видит $1 в двойных кавычках и заменах это со значением переменной $1, который будет пробелом. Это не может обнаружить что $1 вкладывается в одинарных кавычках в двойных кавычках. Таким образом, что заканчивается, то, чтобы быть отправленным на удаленный сервер

ls -l | awk '{print }'

который в основном эквивалентен

ls -l | cat

т.е. это просто распечатывает вывод ls -l.

Решение: выйдите $ с обратной косой чертой,

ssh $HOST "ls -l | awk '{print \$1}'"
19
ответ дан 07.12.2019, 12:17

Теги

Похожие вопросы