#! /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