Linux 如何在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) 结果是错误的 我怎样才能像我说的那样写一个正确的循环 感谢您的支持,

我写了一个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)

结果是错误的

我怎样才能像我说的那样写一个正确的循环


感谢您的支持,如果您有
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