Linux 如何在bash中每次循环计数时触摸文件?
我写了一个bash脚本,我做到了:Linux 如何在bash中每次循环计数时触摸文件?,linux,bash,Linux,Bash,我写了一个bash脚本,我做到了: num=`wc -l /tmp/file.txt | awk '{sum += $1} END {print sum}'` #echo $num #result is for example 29 for i in {1..$num} do touch /tmp/pages/$i.txt done 我想触摸1.txt直到29.txt(echo$num==>29) 结果是错误的 我怎样才能像我说的那样写一个正确的循环 感谢您的支持,
num=`wc -l /tmp/file.txt | awk '{sum += $1} END {print sum}'`
#echo $num
#result is for example 29
for i in {1..$num}
do
touch /tmp/pages/$i.txt
done
我想触摸1.txt直到29.txt(echo$num==>29)
结果是错误的
我怎样才能像我说的那样写一个正确的循环
感谢您的支持,如果您有
seq
,您可以试一试
for i in $(seq $num)
而不是
num=`wc -l /tmp/file.txt | awk '{sum += $1} END {print sum}'`
你为什么不干脆
num=$(wc -l < /tmp/file.txt)
问题是大括号扩展(例如
{1..3,5}
→ <在参数扩展(例如$num
→ <代码>29),因此前者不能依赖后者。在您的情况下,一个选项是对-循环使用算术(C样式):
for (( i = 1 ; i <= num ; ++i )) ; do
touch /tmp/pages/$i.txt
done
for((i=1;i+1表示完全在awk中执行此操作的建议。或者在Bourne shell中,nl file.txt);读取n时,请触摸“$n”.txt;完成
for (( i = 1 ; i <= num ; ++i )) ; do
touch /tmp/pages/$i.txt
done