脚本乐园 shell编程循环结构

while语句格式
while   表达式
  do    
  command
  command
  done 


   while 和 if 的条件表达式完全相同,也是[ ] 或commad或test
 While 表达式 If 表达式
 表达式值为0,则循环继续 表达式值为0,then
 表达式值为非0,则循环停止 表达式值为非0,else

                                                                                                     
   最基本的i++ 条件型循环

i=1
while [ $i -lt 10 ]
do
sed -n "${i}p" 111.txt
i=$(($i+1))       必须双层括号
done   


    命令型while 循环
while command      命令返回值0(成功执行),循环继续
pause函数,输入任何值继续,输入q退出程序
pause()
{
while echo "Press <return> to proceed or type q to quit:"
do
read cmd
case $cmd in
 [qQ]) exit 1;;       exit直接退到底,退出shell script 
 "") break;;          break跳出循环
 *) continue;;        continue跳到循环底,重新开始新循环循环
esac
done
While echo …        此命令没有失败的可能,所以必须有break,return,exit之类的指令


   while 关键字
break———— 用来跳出循环
continue—— 用来不执行余下的部分,直接跳到下一个循环


===========================================FOR语句===================================

    for语句格式
for   表达式
  do    
  command
  command
  done 


    i++,n=n+1 必须用双层括号  $(($num+1)) ,单层括号$($num+1)不管用    
[root@mac-home home]# vi test.sh
:
echo "input num:"
read num
echo "input is $num"

num=$($num+1)
echo "new num is $num"

[root@mac-home home]# sh test.sh
input num:
3
input is 3
test.sh: line 6: 3+1: command not found
new num is
[root@mac-home home]# vi test.sh
:
echo "input num:"
read num
echo "input is $num"

num=$(($num+1))        
echo "new num is $num"

[root@mac-home home]# sh test.sh
input num:
3
input is 3
new num is 4 


    (( ))与[ ]作用完全相同
echo input:
read i
i=$(($i+1))
echo $i  
echo input:
read i
i=$[$i+1]
echo $i
[macg@localhost ~]$ sh ttt.sh
input:
6
7
[macg@localhost ~]$ sh ttt.sh
input:
6
7

 
       再证明(( ))与[ ]完全相同--------if (( ))
if (( $# != 3 )); then
 echo "usage: $0 host user passwd"
    exit 1
fi
if [ $# != 3 ]; then
 echo "usage: $0 host user passwd"
    exit 1
fi
[macg@localhost ~]$ sh ttt.sh 1 2
usage: ttt.sh host user passwd
[macg@localhost ~]$ sh ttt.sh 1 2
usage: ttt.sh host user passwd


   $foo=$(($foo+1))                  # 运行的时候这个地方报错
给变量赋值,左边的变量不需要加 $ 符号,
foo=$(($foo+1))                 
赋值=,read,export都不需要加变量$
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值