使用重定向有什么问题?

使用重定向有什么问题?
#! /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,它不会显示不工作。我究竟做错了什么?

答案1

它们是两个独立的命令。

echo something
cat > somewhere

您可以使用管道将标准输出传递到标准输入:

echo something | cat > somewhere

答案2

一个简单的解决方案是使用双 for 循环,如下所示:

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

答案3

您可以使用 bash 序列进行循环,并巧妙地使用 printf 来重复字符:

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

答案4

作为伊普尔·瑟瑟指出您只是在echo和之间缺少一根管道cat。另一种解决方案是使用yes重复多行的相同文本,而head不是cat限制行数,例如

for i in {A..J}
do
   yes -- "$i" | head -8 >  ~/Desktop/"$i".txt
done

相关内容