shell 流程控制
[*] 操作符
[*] &操作符(不要掉了&前面的空格)
'&'用于使命令后台运行
ping qq.com &
后台运行两个
ping qq.com & ping www.baidu.com &
[*] ;操作符
分隔符;,用于执行多个命令
mkdir /tmp/test.txt ; echo 123456>/tmp/test.txt ;cp /tmp/test.txt{,.bak}
[*] 3、&&
与操作符,在上一条命令执行成功时再执行下一条命令
test -d /tmp/test && cp /tmp/test.txt /tmp/test
[*] 4、||
或操作符,在一条命令失败时执行下一条命令
test -d /tmp/test || mkdir /tmp/test
[*] 5、!
非操作符,表示取相反的结果
rm -rf !(/tmp/test/*.sh) #删除*.sh以外的所有文件
[*] 6、&&-||
就是&&和||组合用法,使用较多
test -d /tmp/test&& echo 'yes'||mkdir /tmp/test# 判断/tmp/test目录是否存在,如果存在就输出yes,不存在就创建
[*] 7、|
管道符,将第一条命令的结果作为第二条命令的标准输入使用
echo '123456'|passwd root --stdin
[*] 8、()
组合操作符
(test -d /tmp/test && echo 'exist') || (mkdir /tmp/test && echo 'exist now')
[*] 9、\
换行符
echo 1\
> 2
[*] 循环语句
[*] 1、if
if 条件 ;then
命令
fi
[*] 2、for
for 变量 in 列表;do
循环体
done
列表可以是:
1、定义的值
2、变量
3、命令
4、目录
5、文件
#!bin/bash
for i in {1..10};do
echo "$i"
done
[*] 3、while
当不符合条件或break时退出循环
while 条件;do
循环体
done
i = 0
T = 0
while [ $i -lt 10 ];do
let i++
let T+=$i
done
echo "1+...+10="$T
[*] 4、until
当满足条件或break时退出循环
until 条件;do
循环体
done
#!/bin/bash
i=0
sum=0
until [ $i -eq 10 ];do
let sum+=$i
let i++
done
echo "1+...+10="${sum}
[*] 5、case
选择语句,根据用户输入执行相应的操作
#!/bin/bash
read -p "input 1 2 3 4": _read
_read=${_read:-1}
case ${_read} in
1)
echo "hello"
;;
2|3)
echo "good"
;;
4)
echo "end"
;;
esac
[*] 6、select
选择语句(一般与case组合使用),用于生成一个选择菜单
#!/bin/bash
select var in "catalina" "alice" "break" "*"
do
case ${var} in
catalina)
echo "i am queen"
;;
alice)
echo "i am princess"
;;
break|*)
break
;;
esac
done
注意case匹配是右上至下的,所以*必须放在最后 break
提前退出循环
continue
提前进入下一个循环
[*] 死循环
#!/bin/bash
i=1
while :;do
echo 'error'
let i++
if [ $i -eq 10 ];then
break
fi
done
while :;do
done
定义的是一个死循环
let i++
让i进行自增长
if ***;then
break
fi
当满足条件是,执行break退出循环
[*] 将文本内容逐行读入循环
#!/bin/bash
i=1
while read TEST;do
echo $TEST
echo '_______________________'
done < /tmp/test.txt
页:
[1]