如何使用脚本中的某些行?

如何使用脚本中的某些行?

cat in|while read s
do call "$s"
done

这需要进行修改,以便它仅针对 arg+n 行运行。例如:a.sh 5

    cat in|while read s
n=10
for lines arg0 through arg0+n
    do call "$s" 
    done

答案1

在将输入提供给读取循环之前,将其过滤为仅相关行会更快、更干净:

n=10
start=$1
end=$((start+n))
cat in | sed "${start},${end}!d" | while read s; do
    call "$s"
done

注意:打印第 $1 行到第 $1+n 行实际上会打印 n+1 行(例如,打印第 5 行到第 15 行实际上是 11 行)。如果要打印从 $1 开始的 n 行,请使用end=$((start+n-1))

答案2

lines=10
current=0
while read line; do
   current=current+1
   if [ "$current" -gt "$lines" ] then exit 0; fi
   if [ "$current" -gt "$1" ] then call "$line"; fi
done < in

相关内容