Запись zsh и вывод на другую команду

У меня был скрипт zsh

printf '%s\0' www/scripts6/lib/* | xargs -0 -I{} -P 50 babel {} > {} 

и это сработало (я думаю.). Но мне нужно было скопировать файлы в каталог scripts вместо scripts6 . Кроме того, мне нужно было добавить дополнительный путь к списку путей вручную, поэтому я попытался сделать это:

 paths=$(printf '%s\0' www/scripts6/lib/* | sed -e 's@www/scripts6/@@g') paths=$paths'main.js'$'\0' echo -n $paths | xargs -0 -I {} -P 50 babel www/scripts6/{} > www/scripts/{} 

Для меня это было БОЛЬШОЕ СОТРУДНИЧЕСТВО. Во всяком случае, скрипт создает файл с именем {} в каталоге scripts (и ничего в каталоге scripts/lib ). Это заставляет меня думать, что только первый {} в коде заменяется аргументом, а не вторым (и у меня нет объяснения отсутствия файлов в каталоге scripts/lib ).

Как я могу заставить скрипт работать как ожидалось?

One Solution collect form web for “Запись zsh и вывод на другую команду”

Перенаправление происходит до выполнения xargs . поэтому ваш первый пример также создает файл с именем {} , потому что у xargs никогда не было возможности заменить последний {} .

Кроме того, хотя вы пытаетесь отделить имена файлов по нулям, чтобы правильно обрабатывать имена файлов, усилия будут напрасны после использования echo . echo в zsh интерпретирует escapes стиля C (\ t, \ n и т. д.) по умолчанию. Вам понадобится опция -E, чтобы отключить это.

Попробуйте это и посмотрите, делает ли он то, что вы хотите

 setopt monitor for f in www/scripts6/lib/*(e*'REPLY=${REPLY#www/scripts6/}'*) main.js; do; while (( $#jobstates >= 51 )); do sleep 1 done echo -E babel $f \> www/scripts/$f & done 

Если вывод выглядит нормально, удалите эхо-E и замените \> на>

  • zsh: подстановка команды не наследует stdin из родительского
  • Ограничение опции grep --color для интерактивной оболочки
  • Почему требуется перезагрузка ежедневной .zshrc с использованием псевдонима, содержащего $ (date -u +% Y% m% d)?
  • Проблема с zsh segfaulting: как продолжить оценку проблемы?
  • Странный вывод на многострочной команде в Китти?
  • Какая магия позволяет мне добавлять удаленные файлы при вводе команды scp?
  • Запуск команд, хранящихся в переменных оболочки
  • Есть ли способ показать только несанкционированные строки в текстовом файле / скрипте?
  • Как остановить появление ^ T% в первой строке, когда я открываю новую lxterminal tab с ^ T в zsh?
  • Изменение динамического названия tmux-окна до последней строки вывода команды
  • Как использовать замещение параметров в шаблоне glob (zsh)
  • Linux и Unix - лучшая ОС в мире.