Неожиданный результат при использовании оператора pipe внутри переменной оболочки
376
hebbo
У меня есть процесс, который выводит некоторые сжатые данные на стандартный вывод. Что я делаю с этим выводом, так это pipe и отправляю его через туннель SSH на другую машину, где он записывается в файл.
Я предполагаю, что оболочка отправила $OUTPUTраздел в качестве аргумента myappвместо того, чтобы действовать на них. Итак, эти «Неизвестный параметр» пришли myappне из оболочки.
Как я могу это исправить?
Вы пробовали / bin / bash вместо / bin / sh?
Sirex 6 лет назад
0
Нет, в системе, над которой я работаю, нет bash. Мне нужно ограничить работу пеплом
hebbo 6 лет назад
0
Тогда вы не должны использовать `bash` в качестве тега.
AFH 6 лет назад
0
хорошо ... убрал это. Но мне было интересно, если моя проблема не связана с пеплом и может на самом деле может произойти в Баш. Итак, я хотел охватить более широкую аудиторию. Кроме того, на данный момент я не там, где проблема.
hebbo 6 лет назад
0
2 ответа на вопрос
0
hebbo
Хорошо .... Я нашел то, что мне было нужно. Это была evalкоманда. Это на самом деле ответили здесь .
Ваша оболочка анализирует любую командную строку в определенной последовательности. Когда он сталкивается, $APP $OPTS $OUTPUTон видит, что нет оператора трубы; позже эти переменные раскрываются и |появляются, но не имеют особого значения, потому что для этого уже слишком поздно.
Результат может быть переоценен с помощью eval(ваш ответ показывает, что вы уже обнаружили это), но evalможет оказаться ошибкойevil .
Ваш оригинальный подход имеет недостатки, поскольку переменные оболочки не должны содержать код. Функции для кода. Пример: