использование для эха без аргументов в сценариях оболочки

У меня есть следующий сценарий bash, с которым я столкнулся в Интернете, который печатает набор мощности для определенных строк элементов.

p() { [ $# -eq 0 ] && echo || (shift; p "$@") | while read r ; do echo -e "$1 $r\n$r"; done } 

после первого && есть echo которое не имеет никаких аргументов.

Вот код для его проверки:

 p $(echo -e "1\n2\n3") 

  • Стандартное предпочтение исполняемого файла над встроенными модулями с тем же именем
  • Почему printh bash быстрее, чем / usr / bin / printf?
  • Заказ исполняемых файлов стартовал в bash
  • В bash, как я могу удалить псевдоним без выхода из системы?
  • Трубопроводы, рабочие места и процессы в Zsh
  • Записывать вывод `time` в файл, зачем нужны скобки?
  • Почему «набор» не работает для меня, а «объявляет»?
  • Почему встроенные времена не работают в трубопроводе?
  • One Solution collect form web for “использование для эха без аргументов в сценариях оболочки”

    Он предназначен для форматирования.

     $ p() { [ $# -eq 0 ] && echo || (shift; p "$@") | > while read r ; do echo -e "$1 $r\n$r"; done } $ p $(echo -e "1\n2\n3") 1 2 3 2 3 1 3 3 1 2 2 1 $ p $ 

    Обратите внимание на пустую строку между одним p и следующей подсказкой. Это echo .

    Здесь это с большей удобочитаемостью:

     p() { if [ $# -eq 0 ]; then echo else (shift; p "$@") | while read r; do echo -e "$1 $r\n$r"; done fi } 

    Причина, по которой вы это указали, не сработала без этого, потому что имеет значение, что есть какая-то команда, так как в противном случае логика нарушается (хотя, как бы то ни было, логика странная).

    Linux и Unix - лучшая ОС в мире.