要一遍又一遍地重复一行,您可以:
yes "abc" | for i in {1..3}; do read -N 10 A; echo "for $i: $A"; done
yes 将输出 'forever',但是 1..3 中的 for i 只会执行“do ... done;” 部分 3 次
是的,在字符串之后添加一个“\n”。如果您不想要它,请执行以下操作:
yes "abc" | tr -d '\n' | for i in {1..3}; do read -N 10 A; echo "for $i: $A"; done
在上述所有内容中,请注意,由于读取是在管道之后,因此在 bash 中它将位于子 shell 中,因此“$A”只能在“do....done;”中使用。区域,然后迷路!
循环并从文件中读取,也不在子shell中这样做:
for i in {1..3}; do read -N 10 A ; echo "for $i: $A"; done <$(cat /the/file)
为确保 /the/file 中有足够的数据,请随意重复:
for i in {1..3}; do read -N 10 A ; echo "for $i: $A"; done <$(cat /the/file /the/file /the/file)
测试最新: echo -n "abc" > /the/file (-n, 所以没有训练换行符)