@for...do...done 的数值处理@

 除了上述的方法之外,for 回圈还有另外一种写法!语法如下:

for (( 初始值;限制值;运行步阶))

do

      程序段

done

这种语法适合於数值方式的运算当中,在 for 后面的括号内的三串内容意义为:

  • 初始值:某个变量在回圈当中的起始值,直接以类似 i=1 配置好;
  • 限制值:当变量的值在这个限制值的范围内,就继续进行回圈。例如 i<=100;
  • 运行步阶:每作一次回圈时,变量的变化量。例如 i=i+1。

值得注意的是,在『运行步阶』的配置上,如果每次添加 1 ,则可以使用类似『i++』的方式,亦即是 i 每次回圈都会添加一的意思。好,我们以这种方式来进行 1 累加到使用者输入的回圈吧!

#!/bin/bash
#Try do calculate 1+2+....+${your_input}
read -p "Please input a number, I will count for 1+2+...+your_input: " nu

s=0
for (( i=0; i<=$nu; i=i+1))
do
   s=$(($s+$i))
done

echo "The result of  '1+2+3+...+$nu' is ==> $s"

执行结果:

[oracle@99bill-as9 zy]$ sh calc.sh
Please input a number, I will count for 1+2+...+your_input: 99
The result of  '1+2+3+...+99' is ==> 4950

案例:

echo "--------------------------------- Instance Status for Tomcat ------------------------------------"
cd $deploy_home
IFS=$'\n'
for app_listin `cat result.list| grep -w console`
do
app_ip=`echo $app_list | awk '{print $1}'`
echo "sh status.sh $app_ip"

echo “The length is ${#app_list[@]}”

done
echo

这里其实还是利用了数组的特点,如果你想要输出全部,则echo “app_list is ${app_list[@]}”,但是如果你要是输出app_list的长度,你会发现和你想想的结果不一样,它的结果是1,知道为何吗,我们来看一下测试结果:



PS:

for i in `seq 1 10`; do echo $i; done
for ((i=1; i<=10; i++)); do echo $i; done

再来看一个例子:

 

for app_list in `cat result.list | grep -w $product_war_name`
do
app_ip=`echo $app_list | awk '{print $1}'`
instance_name=`echo $app_list | awk '{print $3}'|  sed -e 's#.*/\(.*\)\/webapps.*#\1#'`
app_name=`echo $app_list | awk '{print $2}'`
echo "sh deploy.sh $app_ip $instance_name $app_name  $pack_home/$pack_path"
done


 需要说明的是『grep 在数据中查寻一个字串时,是以 "整行"为单位来进行数据的撷取的!』

所以上面的$app_list代表的是一整行的内容,我们就可以找出对应的信息了,O(∩_∩)O哈哈~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值