您的位置:首页 > 运维架构 > Shell

shell编程 循环结构

2011-08-07 20:01 190 查看
=====================================while语句========================================

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都不需要加变量$
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: