一、条件判断

1、判断类型

按照文件类型进行判断:

按照文件权限进行判断:

注:判断权限的时候没有区分ugo,只要ugo中任何一个有该权限,则为真

两个文件之间比较:

两个整数之间比较:

字符串的判断:

多重条件判断:

2、判断语法

格式:

  • test 判断类型 文件名
  • [ 判断类型 文件名 ]

两种格式的效果都一样

注:

  1. 命令执行后没有输出,要再执行echo $?(表示输出上一个命令的结果)才行。0表示真,1表示假
  2. [ 判断类型 文件名 ]这个格式的命令,"["后面和"]"前面必须有空格

比如:

作用:这个命令为什么自身没有输出结果呢?因为这个命令就不是为了给我们看的,而是给计算机看的,一般配合与(&&)运算符使用,如:[ -e 文件名 ] && xxx命令 表示这个文件存在时,才执行xxx命令。因此计算机知道它的结果就行了,不需要输出。

二、if

1、基本语法

if [ command ]; then
     符合该条件执行的语句
fi

2、扩展语法

if [ command ];then
     符合该条件执行的语句
elif [ command ];then
     符合该条件执行的语句
else
     符合该条件执行的语句
fi

3、注意

  1. [ xxx ],括号前后的两个空格很重要。[ ]表示条件测试,在'['后面和']'前面都必须要有空格
  2. 在shell中,then和fi是分开的语句。如果要在同一行里面输入,则需要用分号将他们隔开
  3. 如果只单独使用>或者<号,系统会认为是输出或者输入重定向,虽然结果显示正确,但是其实是错误的,因此要对这些符号进行转义。

4、例如

判断目录$doiido是否存在,若不存在,则新建一个

if [ ! -d "$doiido"]; then
  mkdir "$doiido"
fi

三、case

语法:

case 变量名 in 
  值1) 
   指令1 
  ;; 
  值2) 
   指令2 
  ;; 
  值3) 
   指令3 
  ;; 
esac 

四、for

1、语法一

语法:

for 变量1 in 值1 值2 值3...
    do
        程序
    donoe

如:

  • 简单操作
  • 批量解压缩:
    • 假设所有压缩包都是以tar.gz结尾,ls *.tar.gz > log 将所有的压缩包名字覆盖写进log文件中
    • 编写循环执行的脚本

2、语法二

语法:

for(( 初始值;循环条件;变量变化 ))
    do 
        程序
    done

注:要用两个小括号括起来,因为在linux中,只有双小括号括起来,才能进行加减乘除的运算。

比如:

  • 简单例子

3、两种语法的区别

第一种语法可以使用遍历所有变量,不需要实现知道循环次数;第二种语法需要事先知道循环次数

4、实现九九乘法表

注意:

  1. echo要转义时,要加后缀-e
  2. echo输出默认换行,需要用\c转义来取消换行
  3. 进行加减乘除计算时,都要用两个小括号括起来

5、批量添加用户

因为用循环添加,所以生成用户的用户名会有一定规律

五、while

语法:

while condition
do
    command
done