test命令,成功为真,失败为假;测试结果通过$?检查,0代表真,1代表假。
#!/bin/bash
if test 1 -lt 2; then
echo "OK"
fi
# []中,前后都需要空格
if [ 1 -lt 2 ]; then
echo "ok"
fi
数值比较
-lt:小于
-le:小于等于
-gt:大于
-ge:大于等于
-eq:相等
-ne:不相等
字符串测试
=:相等
!=:不相等
-z:字符串长度是否为0
-n:字符串长度是否不为0
文件判断
-f:普通文件
-d:目录文件
-c:字符设备文件
-b:块设备文件
-w:文件存在,且可写
-x:文件存在,且可执行
-s:文件存在,且至少有一个字符
逻辑运算
-a:逻辑与(and),也可以使用 && 进行转换
-o:逻辑或(or),可以使用||进行转换
!:逻辑非
示例:
if [ 1 -lt 3 -a 2 -lt 3 ]; then
echo "ok"
fi
if [ 1 -lt 3 ] && [ 2 -lt 3 ]; then
echo "ok"
fi
if [ ! 1 -gt 3 ]; then
echo "ok"
fi
分支结构
if-else语句:
if [ 1 -lt 3 -a 2 -lt 3 ]; then
echo "ok"
else[ 1 -lt 3 ] && [ 2 -lt 3 ]; then
echo "ok"
fi
if [ ! 1 -gt 3 ]; then
echo "ok"
fi
case in 语句:
case
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
;;
*) echo '你没有输入 1 到 4 之间的数字'
;;
esac
循环结构
for-in及for语句:
1.
for x in a b c
do
echo $x
done
2.
for x in /etc/*
do
echo $x
done
3.
for x in `seq 1 10`
do
echo $x
done
4.
for i in `seq 1 100`
do
let j+=$i
done
echo $j
5.
a=(1 2 3)
for x in ${a[*]}
do
echo $x
done
6.
for ((i=0;i<=${#a[@]};i++))
do
echo ${a[$i]}
done
while
i=1
sum=0
while [ $i -le 10 ]
do
#((sum+=$i))
#let sum+=$i
sum=$[$sum+$i] 前面这几个函数都是相等的,写一个就行
# ((i++))
# let i++
# let i+=1
i=$[$i+1] 前面这几个函数都是相等的,写一个就行
done
echo $sum
```
until语句:
i=1
until [ $i -gt 10 ]
do
echo $i
((i++))
done