Почему capistrano интерпретирует флаг, переданный командой `run` в качестве ввода? - PullRequest
4 голосов
/ 13 декабря 2010

Я пытаюсь сделать это:

run "echo -n 'foo' > bar.txt"

и содержимое bar.txt в конечном итоге будет:

-n foo \n

\n, представляющим фактическую новую строку)

Я использую команду run для других команд, таких как rm -rf, и, насколько мне известно, она отлично работает.

Ответы [ 2 ]

1 голос
/ 28 декабря 2010

Я только что нашел это в man echo:

Некоторые оболочки могут предоставлять встроенную команду эха, которая похожа или идентична этой утилите. В частности, встроенное эхо в sh (1) не принимает опцию -n. Обратитесь к встроенной (1) странице справочника.

Моя версия bash имеет встроенную функцию echo, но, похоже, она поддерживает флаг -n. Похоже, что оболочка на вашей машине развертывания этого не делает, и в этом случае использование полного пути к двоичному файлу echo может сделать то, что вы хотите здесь:

run "/bin/echo -n 'foo' > bar.txt"
1 голос
/ 25 декабря 2010

Похоже, что флаг -n не интерпретируется оболочкой как флаг.Если из командной строки выполнить echo -Y hi, вывод будет -Y hi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...