Эта команда не работает:
ssh $HOST "ls -l | awk '{print $1}'"`
Выше игнорирует команду awk
. Я думаю, что это могло бы быть из-за двойных кавычек?
Кроме того, как я добавил бы другой набор двойных кавычек в awk?
т.е.:
ssh $HOST "awk '{print $1 "*"}' /some_file"
Я пытался выйти из кавычек, я даже попробовал это:
ssh $HOST "awk '{print $1 "\""*"\""}' /some_file"
без успеха.
Интерполяция переменной выполняется в двойных кавычках, таким образом, вот то, что я думаю, мог бы происходить: когда Вы вводите 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}'"