主要内容:
1.脚本判断条件
2.逻辑运算
3.循环语句

脚本条件判断:
判断:bash
test expression 测试表达式
[expression]  = test expression
`expression`
((expression))

条件测试:
=~ 表示做正则表达式的模糊匹配
[[ "$(变量)" =~ 正则表达式 ]] 是否可被正则表达式匹配 匹配为真

条件测试:
1.整数测试
需要两个测试数
-lt 左边的是否小于右边的 [ $A -lt $B ]
-le 小于等于
-gt 大于
-ge 大于等于
-eq 等于
-ne 不等于?

2.字符串测试
==,= 等于
>  大于
<  小于
!=
-z 判断是否为空 ,为空为真
-n 判断是否不空 ,为空为假

3.文件测试
-e 是否存在
-f 是否是普通文件
-d 是否是目录
-h/-L 是否是符号链接文件
-r 是否可读
-w 是否可写
-x 是否可执行 [ -x file ]
-s 是否存在并不为空
-(大)O 是否为属主
-G 是否是属组

组合条件测试:
-a 两个都满足 [ -x $FILE -a -w $FILE ]
-o 一个
-not, ! 取反
[ ! -x $FILE ]

数学运算符:

$[ ]  $[ [ ] ] 算数运算
+
-
*
/
% : 取模
+=   例:SUM+=1 = SUM=$[$SUM+1]
-=
*=
/=
++  自加  SUM++
--  自减

逻辑运算:

- +   单目操作符
!  ~  按位取反
<<  >> 表示二进制移位
<= >= < > 比较操作符 放入((  ))可用
== != 等于和不等于 字符串测试
&  按位与AND运算
^  按位或OR 运算
&&  逻辑AND
||   或运算 OR
**  次方运算
++ / -- 自加 / 自减  前 : 先加/减后引用,后:先引用后加/减
expr ? expr1 :  expr2  真执行1 否则2

# &&  逻辑与运算 AND.  前表达式为假则执行后表达式.
# ||  逻辑或运算 OR.   前表达式为真则执行后表达式.

声明函数:

function 函数()

{

}
 
循环语句::
for循环:
 for I(变量) in 1 2 3 4 5 (LIST) ; do
 
    statement1
 
    statement2
 
  done
 
 for I(变量) in `seq 1 10`; do =for I in 1 2 3 4 5 6 7 8 9 10;

do
 
  useradd user$I
 
  echo user$I | passwd --stdin user$I
 
done
 
`seq 1 10` ,将1到10展开
 
for I in `seq 1 10`; do = for I in {1..10}; do
 
for循环列表:
1.简单列表 1 2 3 4 5
 
2.复杂列表: This is Tom\'s cat
 
3.变量 `seq 1 $LINS`
 
4.命令 `ls /var`
 
5.通配符 for I in /var/*
 
读取行:
1.IFS=$'\n' :只识别换行符(默认空格被当成分隔符,还有换行符)
  for LINE in `cat /etc/passwd`; do
    statment
    ...
  done
#echo $IFS :内置内建字段换行符
2.while read LINE; do                   (read 一次一行)
    statement
    ...
  done < /etc/passwd

if循环:
单 if CONDITION条件; then
   statement
   ...
 fi
 
双 if CONDITION; then
    expression
    ...
 else
    expression
    ...
  fi
多 if CONDITION; then
      statement
      ...
   elif CONDITION; then
     statement 
     ...
   elif CONDITION; then
     statement 
     ...
   else
     ...
  fi
 (多条件不能重复)

while循环:
  while CONDITION; do  满足条件则循环
    statement
    ...
  done
until循环:
  until CONDITION ;  do  不满足条件则循环
    ...
    ...
  done 

#exit 0 退出脚本 返回值为0
 ---------------------------------------------------------

使用循环实现一次从文件中读一行

一:

IFS=$'\n\'
for LINE in `cat /etc/inittab`; do
  ...
done

 

二:

while read LINE; do
 ...
 ...
done < /etc/inittab