Как избавиться от “\\r” конец строки, прибывающей из конвейера в ударе

Некоторые вещи, которые могут быть различными, когда программа запускается с помощью сеанса работы пользователя, а не сценарий запуска:

  • Программа наследует многие переменные среды (в том числе PATH , Главная , ...).
  • Программа наследует несколько файловых дескрипторов, включая терминал.
  • Пределы могут быть разными.

Для того, чтобы запустить программу с минимальной средой и ряд стандартных дескрипторов файлов, вы можете использовать что-то вроде

env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin myprogram </dev/null >/dev/null 2>/dev/null

Проверьте INIT человек страница или другая документация по вашей системе, чтобы увидеть, какие переменные окружения определяет Отказ Многие программы, предназначенные для пробега в качестве демонов, понадобится Путь и ничего другого. Вышеупомянутое значение - значение по умолчанию для init на Debian.

0
17.04.2015, 02:28
1 ответ

Ох Уважаемый Triple SSH-трубопровод с петли и бесполезными всадниками, вы нашли худший способ сделать это.

\ R Вы видите, кажется, остается остаток новой строки, которая проходит через трубопровод. Вы должны удалить опцию -T [115946] -T , это может быть причиной ваших проблем. Выходные данные предназначены для отображения на виртуальных клеммах отличается от нормального потока.

Более того, ECHO $ ​​{PATH1} | xargs полностью лишнее, просто запустить найти $ {path1} , в любом случае у вас есть только одна входная строка xargs . То же самое касается второго xargs . Конечно, вы можете поставить все в Найти . Попробуйте:

ssh root@"${sourcenode}" "find ${path1} -printf 'chmod %m \"f\"\n'"

и труба в следующую команду ( не в локальную петлю Bash, но подайте его непосредственно в SSH на Destnode).

4
28.01.2020, 02:20

Теги

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