abs6.6 第11章 循环和分支

来源:互联网 发布:three js 点击 编辑:程序博客网 时间:2024/06/07 00:44
10.1 循环
for arg in [list]/`command`
do 
    command
    //set --$arg #解析变量 并且设置位置参数, 下面的代码可以使用 $1 $2访问arg.  -- 防止 arg为空或以-开头的报错
done

// list 可以包含通配符
# 如果list中包括*/? 会进行文件名扩展,file globbing
# 没有in [list] 则循环操作$@,从命令行传递给脚本的参数列表
类似C语言更个
for ((a=1;a <= LIMIT;a++)) # LIMIT前边没有$

10.2 嵌套循环
10.3 循环控制 break,continue
10.4 case and select
case $varibale in 
$condition1)
command
;;
$condition2)
comand
;;
*)
default_command
;;
esac


#!/bin/bashSUCCESS=0FAILURE=1isalpha(){        if [ -z $1 ]        then                return $FAILURE        fi        case "$1" in                [a-zA-Z]*) return $SUCEESS;;        *) return $FAILURE;;esac}isalpha2(){        [ $# -eq 1 ] || return $FAILURE        case $1 in                 *[!a-zA-Z]*|"") return $FAILURE;;                *) return $SUCCESS;;        esac}isdigit(){        [ $# -eq 1 ] || return $FAILURE        case $1 in                 *[!0-9]*|"" ) return $FAILURE;;        *) return $SUCEESS;;esac}check_var(){        if isalpha "$@"        then                echo "$* begins with an alpha character."                if isalpha2 $@                then                        echo "$* contains only alpha character."                fi        elif isdigit $@        then                echo "$* contain only digits [0-9]"        fi}check_var 23skidoocheck_var 23check_var a2check_var ab 23check_var#echo;#echo "Hit a key, then hit return."#read Keypress##case "$Keypress" in #       [[:lower:]] ) echo "Lower letter";;#[[:upper:]] ) echo "Uppercase letter";;#       [0-9] ) echo "Digit";;#*      ) echo "Punctuation ,whitespace , or other";;#esac#outer=1#for a in 1 2 3 4 5#do#       echo "Pass $outer in outer loop."#       echo "--------------------"#       inner=1##       for b in 1 2 3 4 5#       do#               echo "Pass $inner in inner loop"#               let "inner+=1"#       done##       let "outer+=1"#done#t=0#condition()#{#       ((t++))#       if [[ $t -lt 5 ]]#       then#               return 0#       else#               return 1#       fi#}##while condition#do#       echo "t=$t"#done##cat $0 | #while read line #do#       echo $line#done#LIMIT=10#a=1##while [ "$a" -le $LIMIT ]#do#       echo -n "$a"#       let "a+=1"#done##((a=1))#while((a<=LIMIT))#do #       echo -n $a#       ((a+=1))#done#var1=unset#previous=$var1#while echo "previous-variable = $previous"#       echo#       previous=$var1#       [ "$var1" != end ]#do#       "input variable #1 (end to exit)"#       read var1#       echo "variable #1 = $var1"#done#echo #echo#while [ "$var1" != "end" ]#do#       echo "Input variable #1 (end to exit) "#       read var1#       echo "$variable #1 = $var1"#       echo #done#var0=0#LIMIT=10##while [[ "$var0" -lt "$LIMIT" ]]#do#       echo -n "$var0"##       var0=`expr $var0 + 1`#done#LIMIT=10#for((a=1;a<=LIMIT;a++))#do#       echo -n $a#done#for((a=1,b=1;a<=LIMIT;a++,b++))#do#       echo -n "$a-$b"#done#for a in 1 2 3 4 5 6 7 8 9 10#do#       echo -n $a#done#for a in `seq 1  2 10`#do#       echo -n $a#done##for a in {1..10}#do#       echo -n $a#done#directory=${1-`pwd`}#echo "symbolic links in directory \"$directory\""#for file in "$(find $directory -type l)" #do #       echo "$file"#done | sort#OLDIFS=$IFS#IFS=:##for file in $(find $directory -type l -printf "%p$IFS")#do#       echo "$file"#done | sort#generate_list()#{#       echo "one two three"#}##for word in $(generate_list)#do#       echo "$word"#done#PASSWORD_FILE=/etc/passwd#n=1#for name in $(awk 'BEGIN{FS=":"} {print $1}' < $PASSWORD_FILE)#do#       echo "USER #$n=$name"#       let "n+=1"#       #$((n+=1))#done#NUMBERS="9 7 3 8 37.53"###for number in $NUMBERS#for number in `echo $NUMBERS`#do #       #echo -n "$number"#       echo -n "$number"#done#FILES="/usr/sbin/accept#/usr/sbin/pwck#/usr/sbin/chroot#/sbin/badblocks#/sbin/ypbind"##echo#for file in $FILES#do #       if [ ! -e "$file" ]#       then#               echo "$file dons not exitst.";#               echo#               continue#       fi##       ls -l $file | awk '{ print $8"  file size:" $5 }'#       whatis `basename $file`#       echo#done#IFS=$'\n';for line in `cat for_test.txt`;#do#       echo "$line"#done#echo#for file in *#do#    ls -l "$file"#    echo "file:$file"#done##echo;#echo "-----------------------------"##for a#do#    echo -n "$a"#done##echo #exit 0##for planet in "Mercyry 36" "Venus 67" "Earth 93" "Mars 142" "Jupiter 483" "-x a"#do#       set $planet#       #set -- $planet##       echo "$1 $2,000,00 miles from the sun"#done



原创粉丝点击