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

shell——for&while&select

2015-07-23 16:57 399 查看
     本文通过实例来分析shell中for、while、select的使用。

1、select表达式是bash的一重扩展应用,擅长于交互式场合,永和可以从一组不同的值中进行选中

select var in ... ; do

break ;

done

... now $var can be used ...

例如:用户根据设定值进行选则

echo "what is your favourite OS? "

select var in "LINUX" "Windows" "Unbutu" "Other" ; do

break;

done

echo "You have selected $var"

执行后:

[qatest@nmsg-42 ~]$ ./select.sh

what is your favourite OS?

1) LINUX

2) Gnu Hurd

3) fREE bsd

4) Other

#? 3

You have selected fREE bsd

2、在shell中可以使用while循环,只要测试表达式条件为真,则while循环将一直运行。关键字break用来跳出循环,而关键字continue则可以跳过一个循环的余下部分,直接跳到下一次循环中,while中为方括号[],且有空格

while ... ; do

...

done

例如:while和case结合

while :

do

    echo -n "input a letter: "

    read var

    case "$var" in

        [a-z]) echo "Lower case letter" ;;

        [A-Z]) echo "Upper case letter" ;;

        [0-9]) echo "Digit" ;;

        *) echo "other letter" ;;

esac

done

执行后:

[qatest@nmsg-42 ~]$ ./case.sh

input a letter: a

Lower case letter

例如:判断min和max,然后输出,#while循环注意为方括号[],且注意空格

min=1

max=10

while [ $min -le $max ]

do

    echo $min

    min=`expr $min + 1`

done

例如:#双括号形式,内部结构有点像C的语法,注意赋值:i=$(($i+1)), 即输出4的整数是多少,结果为4和8
i=1

while(($i<10))

do

    if(($i%4==0))

    then

        echo $i

    fi

    i=$(($i+1))

done

3、在shell中for会查看一个字符串列表(字符串用空格分割),并将其赋给一个变量

for var in ... ; do

...

done

例如:输出1到10,#数字段形式

for a in {1..10}

do

echo "a is $a"

done

例如:#详细列出(字符且项数不多)
for File in 1 2 3 4 5

do

    echo $File

done

例如:#对存在的文件进行循环,查找.sh文件,然后输出每个文件的名字
for shname in `ls *.sh`

do

          name=`echo "$shname" | awk -F. '{print $1}'` 

         
name=`echo "$shname" | awk -F "|" '{print $1}' #显示扩展名`

          echo $name

done

例如:#查找循环(ls数据量太大的时候也可以用这种方法)
for shname in `find . -type f -name "*.sh"`

do

          name=`echo "$shname" | awk -F/ '{print $2}'`         

          echo $name

done

例如:#((语法循环--有点像C语法,但记得双括号,输出3、6、9
for((i=1;i<10;i++))

do

    if((i%3==0))

    then

        echo $i

        continue #如果用break,则只会输出3

    fi

done

例如:#seq形式 起始从1开始
for i in `seq 100`

do

    if((i%3==0))

    then

        echo $i

        continue

    fi

done

通过以上示例可以很好的看到select、while、for的使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: