• 操作符

  • &操作符(不要掉了&前面的空格)

'&'用于使命令后台运行

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

shell 流程控制



  • 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}

shell 流程控制



  • 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

shell 流程控制
  • 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 

shell 流程控制
注意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

shell 流程控制


转载于:https://blog.51cto.com/13323775/2052581

相关文章: