for fruit in apple orange pear    #写死
do
each ${fruit}s
done fruits="apple orange pear" #输入变量的值
for f in $fruits

一、for循环

1、向for提供数据

1)写死 或 变量

2)read

3)从命令行读取$*    $@

  for fruit in $*; do  或者 for fruit; do(这一技术使用于函数,乱入函数:)

do_i_like()
{
for fruit; do
echo I realy like ${fruit}s
done
}
do_i_like apple banana oranges

4)使用seq命令给for输入数据(用于产生从某个数到另外一个数之间的所有整数)

  # seq 1 10
  结果是1 2 3 4 5 6 7 8 9 10  

  for i in `seq 1 10`

  for host in `grep "172.30.0" /etc/hosts | awk '{ print $2 }'`

2  bash有类似C风格的for循环

   for ((i=,j=; i<=; i++,j-= ))
do
printf "i=%03d j=%03d\n" $i $j
done

二、while循环

在没有需要遍历的列表但在具有决定循环何时结束的可测试条件时,使用while最合适。

1)测试循环本身的变化

2)逐行读取文本文件的内容

read password < /etc/passwd读入一行
while read passwd
do
echo $passwd      #这里可以加入好多功能!
done < /etc/passwd一直循环读,直到不再输入
#!/bin/bash
#通过管道循环读取/etc/passwd内容
cat /etc/passwd | while read line
do
#以:为分割符,只读取第一个字段
user=`awk -F : '{print $1}' <<< ${line}`
echo "Account: ${user}"
done

3)重定向到文件

   i=
while [ $i -lt ]
do
echo "`date`" : Partition $i
ls -ld /dev/sda$i
sleep
let i=$i+
done > partition.txt >partitionerror.txt

4)内置的:命令,或者是/bin/true命令,他们总是返回0,表示成功,使用他们可以让循环永远执行下去。

host=${:-declan}
while grep -qw $host /tmp/hosts-to-ping.txt
do
:
done

5)死循环

   while :    #中间有空格
do
echo 'xx'
sleep
done

用ctrl+c结束

三、嵌套循环

一个循环存在于另一个循环中

四、循环的break和continue

break  break 2退出两层;  

continue  continue 2表示要跳转的外层循环层数

五、带case的while循环

就是while里边使用case

六、until循环

除了测试条件相反,until循环与while循环在其他地方完全相同。即满足条件就退出循环

until 条件
do

done

七、select循环

非常适合编写菜单的循环,常和if、case等一起使用

它根本没有条件测试,退出的唯一方式是使用break或exit   打断用ctrl+c

提示符在$PS3变量

和for一样可以去掉in (x),这样select会使用自己所在的脚本或函数的$*参数

我的samba管理器好想可以用它做一个命令行的!

   select item in one two three four five
do
if [ ! -z $item ]; then
echo "You choiced $item"
break
else
echo "$REPLY is not valid"  用户输入的值在$REPLY变量
fi
done

最新文章

  1. [LeetCode] Palindrome Permutation II 回文全排列之二
  2. 0x0A和0x0D
  3. ionic中的生命周期函数
  4. lintcode 中等题:N Queens N皇后问题
  5. IO流详解(半教材类型)
  6. apache的MPM机制-prefork
  7. redis: 6379端口下set值时出现 CLUSTERDOWN The cluster is down
  8. idea maven jetty插件热部署
  9. Linux下查找最大文件
  10. Swift - iOS应用的国际化与本地化
  11. Android控件拖动的实现
  12. OCP读书笔记(18) - 空间管理
  13. Ajax请求,跨域小坑
  14. HPU--1221 Fibonacci数列
  15. python GUI 之 tkinter
  16. elementUi中input输入字符光标在输入一个字符后,光标失去焦点
  17. HDU 1250
  18. skype在线状态代码详解
  19. django的url的name参数的意义
  20. Spring中&lt;bean&gt;标签之使用p标签配置bean的属性

热门文章

  1. MariaDB数据库
  2. Redis备忘(一)
  3. Java_条件控制与循环控制
  4. 回头看 vue-router
  5. mysql的一些常用操作(二)
  6. 通过CSS3实现圆形头像显示
  7. C#3种常见的定时器(多线程)
  8. 完美解决Python与anaconda之间的冲突问题
  9. git出现Your branch and &#39;origin/master&#39; have diverged解决方法
  10. .NET Core 3.0 中间件 Middleware