day 8
if 判断文件、目录属性
[-f file] 判断是否普通文件且存在
[ -d file]判断是否目录且存在
[ -e file ]判断文件或目录是否存在
[ -r file ] 判断文件是否可读
[ -w file ]判断是否可写
[ -x file ] 判断文件是否可执行
if 判断的特殊用法
if [ -z "$a"]表示当变量a的值为空时执行操作
if [ -n “$a"] 当变量a的值不为空时(-n与-z时注意,如果是变量需要使用双引号,文件不需要)
if 可加命令当作判断条件 if grep -q '123' 1.txt;then 表示如果1.txt中包含‘123’的行时会执行操作
if [! -e file ];then 表示文件不存在时会执行操作
if (($a<1));then 等同于 if [$a -lt 1] ; then
[ ] 中不能使用<,>,!=,>=,<=
case判断
格式case 变量名 in
value1)
command
;;
value2)
command
;;
esac
再case程序中,可以再条件中使用|,表示或
示例:
[root@iZwz96qzfgxh9l2rk7esxnZ shell]# vim case.sh [root@iZwz96qzfgxh9l2rk7esxnZ shell]# cat case.sh #!/bin/bash read -p "Please input a number: " n if [ -z "$n" ] then echo "Please input a number." exit 1 fi n1=`echo $n|sed 's/[0-9]//g'` if [ -n "$n1" ] then echo "Please input a number." exit 1 fi if [ $n -lt 60 ] && [ $n -ge 0 ] then tag=1 elif [ $n -ge 60 ] && [ $n -lt 80 ] then tag=2 elif [ $n -ge 80 ] && [ $n -lt 90 ] then tag=3 elif [ $n -ge 90 ] && [ $n -le 100 ] then tag=4 else tag=0 fi case $tag in 1) echo "not ok" ;; 2) echo "ok" ;; 3) echo "ook" ;; 4) echo "oook" ;; *) echo "The number range is 0-100." ;; esac [root@iZwz96qzfgxh9l2rk7esxnZ shell]# sh case.sh Please input a number: 80 ook [root@iZwz96qzfgxh9l2rk7esxnZ shell]# sh case.sh Please input a number: 123 The number range is 0-100. [root@iZwz96qzfgxh9l2rk7esxnZ shell]# |
for 循环
语法: for 变量名 in 条件;do ...; done
[root@iZwz96qzfgxh9l2rk7esxnZ shell]# cat for.sh #!/bin/bash sum=0 for i in `seq 1 100` do sum=$[$sum+$i] done echo $sum [root@iZwz96qzfgxh9l2rk7esxnZ shell]# sh for.sh 5050 [root@iZwz96qzfgxh9l2rk7esxnZ shell]# |
需要注意for循环内空格回车都作为分隔符