目录
1--常用判断条件
Shell 可通过整数比较、文件权限和文件类型等方面进行判断;
1-1--整数比较
-lt 表示小于(less than);
-le 表示小于等于(less equal);
-eq 表示等于(equal);
-gt 表示大于(greater than);
-ge 表示大于等于(greater equal);
-ne 表示不等于(Not equal);
1-2--文件权限
-r 有读的权限(read);
-w 有写的权限(write);
-x 有执行的权限(execute);
1-3--文件类型
-f 文件存在且是一个常规的文件(file);
-e 文件存在(existence);
-d 文件存在且是一个目录(directory);
1-4--实例测试
基本语法:[ condition ](注意 condition 前后要有空格);
不涉及判断条件时,条件非空即为 true;即[ xxxx ]为 true,[]为 false;
[ 10 -gt 9 ]
echo $?
[ 10 -lt 9 ]
echo $?
[ -e ./test.sh ]
echo $?
2--流程控制
2-1--if判断
基本语法:
if [ condition ];then
xxxxx
fi
或
if [condition]
then
xxxxx
fi
注意事项:
[ condition ] 中中括号和条件表达式之间必须有空格;
if 之后必须有空格;
实例代码:输入一个数字,若为1,则输出 Hello Shell1;若为2,则输出 Hello Shell2;若为其它,则输出 GoodBye Shell!;
#!/bin/bash
if [ $1 -eq 1 ];then
echo "Hello Shell1"
elif [ $1 -eq 2 ];then
echo "Hello Shell2"
else
echo "GoodBye Shell!"
fi
2-2--case语句
基本语法:
case $var in
value1)
xxxxx
;;
value2)
xxxxx
;;
*)
xxxxx
;;
esac
注意事项:
① case 行尾必须为单词 "in",每一个模式匹配必须以右括号 ")" 结束;
② 双分号 ";;" 表示命令序列结束,相当于 break;
③ "*)" 表示默认模式,相当于default;
代码实例:输入一个数字,若为1,则输出 Hello Shell1;若为2,则输出 Hello Shell2;若为其它,则输出 GoodBye Shell!;
#!/bin/bash
case $1 in
1)
echo "Hello Shell1"
;;
2) echo "Hello Shell2"
;;
*) echo "GoodBye Shell"
;;
esac
2-3--for循环
① 基本用法1
for((初始值; 循环控制条件; 变量变化))
do
xxxxxx
done
实例代码1:求解从 1 到 100 的加和:
#!/bin/bash
s=0
for((i=1; i<=100; i++))
do
s=$[$s+$i]
done
echo $s
② 基本用法2
for var in value1 value2 ...
do
xxxxxxxx
done
实例代码2:
#!/bin/bash
for i in $*
do
echo "Param: $i"
done
echo "----------------"
for j in $@
do
echo "Param: $j"
done
#!/bin/bash
for i in "$*"
do
echo "Param: $i"
done
echo "----------------"
for j in "$@"
do
echo "Param: $j"
done
2-4--While循环
基本用法:
while [ condition ]
do
xxxxxxx
done
代码实例:求解从 1 到 100的累加和:
#!/bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
sum=$[$sum + $i]
i=$[$i + 1]
done
echo $sum
3--read读取控制台输入
基本用法:
read(选项)(参数)
选项:
-p: 指定读取值的提示符
-t: 指定读取值的等待时间
参数:
变量:指定读取值的变量名
实例代码:
#!/bin/bash
read -t 7 -p "input your name " VAR_NAME
echo "your name is "$VAR_NAME