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