Что случилось с этим использованием перенаправления?

#! /bin/bash for i in {A,B,C,D,E,F,G,H,J} ; do echo "$i $i $i $i $i $i $i $i" cat > ~/Desktop/$i.txt done 

Я хочу сделать 9 текстовых файлов, каждый из которых показывает мне одну букву, повторяемую 8 раз. например, A.txt должен иметь букву A 8 раз в столбце). Если я запускаю скрипт без cat , он действительно показывает мне 8 раз букву A, затем 8 раз B, C и т. д. Когда вы вставляете оператор cat , он не работает. Что я делаю не так?

4 Solutions collect form web for “Что случилось с этим использованием перенаправления?”

Это две независимые команды.

 echo something cat > somewhere 

Вы можете использовать pipe для передачи stdout в stdin:

 echo something | cat > somewhere 

Простым решением для этого будет двойной цикл:

 for f in {A..J}; do for ((i=0;i<8;i++)); do printf '%s\n' "$f" >> "$f"; done; done 

Вы можете использовать последовательности bash для цикла и умное использование printf для повторения символов:

 for i in {A..J};do printf "$i%.0s\n" {0..7} > ~/Desktop/$i.txt;done 

Как указал Ipor Sircer , вам просто не хватает трубы между вашим echo и cat . Другим решением могло бы быть использование yes для повторения одного и того же текста нескольких строк и head вместо cat чтобы ограничить количество строк, например

 for i in {A..J} do yes -- "$i" | head -8 > ~/Desktop/"$i".txt done 
  • Когда следует использовать перенаправление ввода?
  • io перенаправление на «крест» 2 программы
  • Перенаправление после запуска процесса
  • Ограничить размер файла журнала
  • Восстановление вывода на терминал после выдачи «exec &> filename»
  • использование аргумента командной строки с перенаправлением
  • Как отправить надстройку stdout в multilog и второй процесс
  • Почему некоторые linux-инструменты записывают в STDERR вместо STDOUT по умолчанию?
  • Почему перенаправление STDERR на / dev / null выполняется таким образом?
  • Как перенаправить вывод cowsay на вход zwrite
  • Перенаправить вывод программы в файл не удается
  • Почему выход не перенаправляется в файл?
  • Linux и Unix - лучшая ОС в мире.