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