我正在尝试将多行通过管道传输到文本文件中,同时根据序列操作正在传输的字符串
cmd="My string 00"
for i in $(seq -f "%02g" 00 05); \
do \
echo $(echo $cmd | sed -e 's|00|$(echo $i)|g') >> outfile.txt ; \
done
不起作用。输出应如下所示:
My string 00
My string 01
My string 02
My string 03
My string 04
My string 05
但输出是:
My string $(echo $i)
My string $(echo $i)
My string $(echo $i)
My string $(echo $i)
My string $(echo $i)
My string $(echo $i)
您可以使用
printf
和大括号扩展来完成所有操作:如果由于某种原因您必须生成具有比您真正想要的更多填充的输入序列,
printf
将为您重新格式化:输出到 outfile.txt: