shell编程中的for循环如何实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程中的for循环如何实现相关的知识,希望对你有一定的参考价值。

shell编程:
假设有个subscriber.txt文件,里面是一些我需要执行的内容,唯一的变化就是subscriberId; 我需要的subscriberId的区间是 001~100
现在我需要做一个脚本,假如已经存在一个函数:add -subscriber.txt ,可以通过这个函数每次添加一个subscriberId;
,我需要做的是,通过for循环,挨个把subscriberId替换掉,并全部添加;
请问如何实现,包括for循环如何实现,subscriberId如何更改等;多谢
还有几个补充问题:
1,for循环的格式不是 “for 变量名 in 列表”吗?
那这个地方的变量名和列表在脚本里 我该如何写
2,关于subscriber.txt这个文件,里面唯一变化的部分就是subscriberid, 是不是在这个文件中我用#SubscriberId# 替换subscriberid即可?
3,这句话能详细解释一下不,对sed命令太不熟悉了~
sed 's/subscriberId/'$i'/' sub>$i.txt
4,我一开始的想法是这样的形式,麻烦帮我看看如何修改一下:

add_all_subscriber()

file=subscriber.txt
if [ 100 -gt $ SubscriberId && 0 -lt $ SubscriberId ]; then
add_one_subscriber $a
a = $SubscriberId + 1
sed -e 's/Id/$a/' subscriber.txt >> subscriber_update.txt

mv subscriber.txt subscriber_update.txt
rm -rf subscriber.txt
mv subscriber_update.txt subscriber.txt
else
echo "completed"
fi



add_one_subscriber()

#ladd_id subscriber.txt #add_id 这是一个已知函数,直接调用即可



多谢了

运行报错吗

add_all_subscriber()

file=subscriber.txt
for i in `seq 100`; do
SubscriberId = 0
a = $(($SubscriberId + $i))
add_one_subscriber $a
sed -e 's/Id/$a/' subscriber.txt >> subscriber_update.txt
done

mv subscriber.txt subscriber_update.txt
rm -rf subscriber.txt
mv subscriber_update.txt subscriber.txt
else
echo "completed"
fi



改成下面的内容试下
参考技术A #!/bin/sh
for((i=1;i<=100;i++))

sed 's/subscriberId/'$i'/' sub>$i.txt

以上是关于shell编程中的for循环如何实现的主要内容,如果未能解决你的问题,请参考以下文章

matlab编程中如何做到自适应调整for循环中的步长

Linux shell for 循环和双层循环

Swift编程语言中如何实现自定义类型的for-in循环(基于Swift 2.2)

shell脚本并发

shell实现SSH自动登陆

shell编程