使用重定向有什麼問題?

使用重定向有什麼問題?
#! /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

相關內容