操作符
&操作符(不要掉了&前面的空格)
'&'用于使命令后台运行
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 |
转载于:https://blog.51cto.com/13323775/2052581