我试图将多行管道传输到一个文本文件中,同时按照顺序操作管道传输的字符串
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)
答案1
for i in {00000..00005}; do echo "${i/???/My string }"; done >> outfile.txt
输出到outfile.txt:
My string 00
My string 01
My string 02
My string 03
My string 04
My string 05
答案2
您可以使用printf
括号扩展来完成所有操作:
$ printf 'My string %02d\n' {0..5} > outfile.txt
$ cat outfile.txt
My string 00
My string 01
My string 02
My string 03
My string 04
My string 05
如果出于某种原因你必须生成比您真正想要的更多的填充的输入序列,printf
将为您重新格式化:
$ printf 'My string %02d\n' $(seq -f "%05g" 00 05)
My string 00
My string 01
My string 02
My string 03
My string 04
My string 05