码迷,mamicode.com
首页 > 其他好文 > 详细

bash脚本(二)

时间:2014-12-12 23:33:36      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:style   io   ar   color   os   使用   sp   for   on   

for循环
for VAR in LIST; do
    statements
    ...
done

LIST列表:
1、直接给出
2、数值列表
{start..end},如{1..10}
seq LAST
seq FIRST LAST
seq FIRST STEP LAST,如seq 1 2 10,会读取到13579 
3、特殊变量$#,$@,$*
4、通过命令引用获取的参数列表,如($(grep ‘bash$‘ /etc/passwd | cut -d: -f3))
5、通配符读取目录 /tmp/test/*

通过命令引用获取的参数列表
  1. [root@localhost ~]# cat /root/test
  2. aa
  3. bb
  4. cc
  5. dd
  6. ee
  7. [root@localhost ~]# cat test.sh 
  8. #!/bin/bash
  9. declare -i x=1
  10. for i in `cat /root/test`; do
  11. echo "value$x$count:=$i"
  12. let x++
  13. done
  14. [root@localhost ~]# bash test.sh 
  15. value1:=aa
  16. value2:=bb
  17. value3:=cc
  18. value4:=dd
  19. value5:=ee
通配符读取目录
  1. [root@localhost ~]# cat test.sh 
  2. #!/bin/bash
  3. declare -i x=1
  4. for i in /tmp/*; do
  5. echo "value$x$count:=$i"
  6. let x++
  7. done
  8. [root@localhost ~]# bash test.sh 
  9. value1:=/tmp/test1
  10. value2:=/tmp/test2
  11. value3:=/tmp/test3
  12. value4:=/tmp/test
for的C风格
for (( variable assignment; condition; iteration process)); do
#statements
done
  1. #/bin/bash
  2. for (( a = 1,b=10; a <= 10; a++,b-- )); do
  3. echo "$a-$b"
  4. done
选择语句
单分支if语句
if [[ condition ]]; then
#statements TRUE 
fi
if可以嵌套
if [[ condition ]]; then
if [[ condition ]]; then
#statements
fi
fi
双分支if语句
if [[ condition ]]; then
#statements TRUE
else
#statements FLASE
fi
多分支if语句,哪个condition为TRUE满足则执行下面的statements
if [[ condition ]]; then  
elif [[ condition ]]; then
#statements
elif [[ condition ]]; then
#statements
else
#statements
fi
case语句
case word in
pattern )
;;
pattern )
;;
pattern )
;;
* )
;;
esac
pattern可使用通配符:
        *:任意长度的任意字符
        ?: 任意单个字符
        []:指定范围内的任意单个字符
        a|b: a或者b
  1. [root@localhost ~]# cat test.sh
  2. #!/bin/bash
  3. read -p "Enter a choice" choice
  4. case ${choice:-b} in
  5. a) echo "a";;
  6. b) echo "b";;
  7. c) echo "b";;
  8. esac
  9. [root@localhost ~]# bash test.sh 
  10. Enter a choice
  11. b
while,until语句
while [[ condition TRUE ]]; do
#statements
修正表达式否则会死循环
done
until [[ condition FALSE ]]; do
#statements
修正表达式否则会死循环
done
  1. 1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9
  2. 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
  3. 3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
  4. 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
  5. 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
  6. 6x6=36 6x7=42 6x8=48 6x9=54
  7. 7x7=49 7x8=56 7x9=63
  8. 8x8=64 8x9=72
  9. 9x9=81
  10. #!/bin/bash
  11. declare -i i=1
  12. declare -i j=1
  13. while [[ $i -lt 10 ]]; do
  14.     let j=$i
  15.     until [[ $j -gt 9 ]]; do
  16. echo -e -n "${i}x${j}=$[$i*$j]\t"
  17. let j++
  18.     done
  19.     let i++
  20.     echo
  21. done

  1. 9x9=81
  2. 8x8=64 8x9=72
  3. 7x7=49 7x8=56 7x9=63
  4. 6x6=36 6x7=42 6x8=48 6x9=54
  5. 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
  6. 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
  7. 3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
  8. 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
  9. 1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9
  10. #!/bin/bash
  11. declare -i i=9
  12. while [[ $i -gt 0 ]]; do
  13.     j=$i
  14.     until [[ $j -gt 9 ]]; do
  15. echo -e -n "${i}x${j}=$[$i*$j]\t"
  16. let j++
  17.     done
  18.     echo 
  19.     let i--
  20. done
while的特殊用法
  1. [root@localhost ~]# cat /tmp/test aa aa aa aa bb bb bb bb cc cc cc cc
  2. #!/bin/bash
  3. count=1
  4. cat /tmp/test | while read line; do
  5. echo "Line $count:$line"
  6. let count++
  7. done

  8. #!/bin/bash
  9. count=1
  10. while read line; do
  11. echo "Line $count:$line"
  12. let count++
  13. done < /tmp/test

  14. 2个脚本的效果一样
  15. Line 1:aa aa aa aa
  16. Line 2:bb bb bb bb
  17. Line 3:cc cc cc cc
break可以退出进行中的循环的一个简单方法
  1. [root@localhost ~]# cat test.sh 
  2. #!/bin/bash
  3. for i in {1..10}; do
  4.     if [ $i -eq 5 ];then
  5. break
  6.     fi
  7.     echo "$i"  
  8. done
  9. [root@localhost ~]# bash test.sh 
  10. 1
  11. 2
  12. 3
  13. 4
continue命令是提早结束执行循环内部的命令但不完全终止整个循环的一个途径
  1. [root@localhost ~]# cat test.sh
  2. #!/bin/bash
  3. for i in {1..15}; do
  4. if [[ $i -gt 1 ]] && [[ $i -lt 14 ]]; then
  5. continue
  6. fi
  7. echo "$i"
  8. done
  9. [root@localhost ~]# bash test.sh
  10. 1
  11. 14
  12. 15

bash脚本(二)

标签:style   io   ar   color   os   使用   sp   for   on   

原文地址:http://www.cnblogs.com/kwstars/p/bea6f8fb74b164593333109b015934a2.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!