流程控制使程序员具有人工智能,可根据不同的情况,做不同的处理,而且指定执行重复的程序区域,展现
程序的生产力。
命令执行完毕的状态返回值变量是$?,执行成功返回0,不成功返回非零
例子:
if grep -q ^ols3 /etc/passwd; then
echo 'ols3 这个账号存在'
fi
寻找/etc/passwd 文件中是否有ols3 这个关键词出现在行首, -q: 安静,不输出匹配到行,只返回退出状态,
返回0表示找到匹配的行。
1. if-then-else
if 条件测试;then
命令区域
fi
2. if 条件测试;then
命令区域1
else
命令区域2
fi
例子:
if [ -d /root/tmp ];then
echo '/root/tmp 目录存在'
else
echo ' /root/tmp 目录不存在'
fi
注:[ -d /root/tmp ] 检测目录是否存在
3.if的完整语法
if 条件测试1;then
命令区域1
elif 条件测试2;then
命令区域2
else
命令区域3
fi
4.case 的语法、
case 待测项 in
样式串行) 命令区域 1;; 注意:命令区域结束前的
样式串行) 命令区域 2;;
..........
*) 命令区域;;
esac
5 for 循环
for 变量 in 串行
do
命令区域
done
例子: for i in 1 2 3 4 5
do
echo $i
done
例子 for 变量 in $@ 注意:$@ 代表命令行所有的参数
do
命令区域
done
for 循环经常用在分割字符串行,取出字段元素值。 $( 命令行)
-------------------------------------------------------------
for line in $(cat cvsfile.txt) 取出文件字段,做为条件
-------------------------------------------------------------
dir="/root"
for f in $(ls $dir)
for 循环经常用在处理目录中的文件
-------------------------------------------------------
for 循环的另外一种形式,
for (( i=1; i<=10;i=i+1 ))
do
done
-----------------------------------------------------------
无穷循环
for (( ;1;))
do
命令区域
done
终止 ctrl+c
-----------------------------------------------------------
while 循环
while 条件测试
do
命令区域
done
---------------------------------------------------------
while ((i<=10))
do
let sum+=i
let ++i
done
echo $sum
注意:sum+=i sum=sum+i 效果是一样
-------------------------------------------------------
使用while 循环,读取文件内容
while 循环,经典的用法是搭配转向输入,读取文件的内容
#!/bin/bash
while read line
do
echo $line
done < cvsfile.txt
----------------------------------------
while 无穷循环
while ((1))
或者
while true
或者
while :
---------------------------------------------
until 循环
while 循环的条件测试是测真值,until 循环则是测假值
until 条件测试 如果传回为假(传回的值不为0)
do
命令区域
done
------------------------------------------------------
转载于:https://blog.51cto.com/eagleheart/1252049