При выполнении следующей команды:
docker-machine ssh name-here "docker swarm init --advertise-addr $(hostname -I | awk '{print $1}')"
я получаю следующую ошибку:
имя хоста: недопустимая опция - я использую: имя хоста [-fs] [имя- of-host]
Это потому, что команда пытается запустить hostname -I
на моей локальной машине, работающей в MacOS, у которой нет флага -I
.
Попытка запустить без двойных кавычек приводит к той же ошибке.
Я инкапсулировал полную команду в двойных кавычках, поэтому я ожидал, что все содержимое двойных кавычек будет выполнено как одиночные аргумент docker-machine ssh
, но, похоже, дело не в этом.
Я пробовал одинарные кавычки ('
), но это противоречит требованию единой кавычки awk в отношении печати. Я даже попробовал сумасшедший $$
, как вы использовали бы в make-файлах рядом с именем хоста, но это тоже не работает.
Почему $(hostname -I | awk '{print $1}')
выполняется на хост-машине, когда команда инкапсулирована в двойном формате? кавычки, и как я могу правильно выполнить вышеуказанную команду для инициализации роя docker с именем хоста в машине?