快捷搜索:  

Linux系统shell编程入门(2)


 
  常用的字符穿操作符有:
 
  = 比较两个字符串是否相同,同则为“是”!= 比较两个字符串是否相同,不同则为“是”
 
  -n 比较字符串长度是否大于零,如果大于零则为“是”
 
  -z 比较字符串的穿度是否等于零,如果等于则为“是”
 
  2、 数字比较
 
  这里区别于其他编程语言,test语句不使用>?类似的符号来表达大小的比较,而是用整数式来表示这些。
 
  -eq 相等
 
  -ge 大于等于
 
  -le 小于等于
 
  -ne 不等于
 
  -gt 大于
 
  -lt 小于
 
  3、 逻辑操作! 反:与一个逻辑值相反的逻辑值
 
  -a 与(and):两个逻辑值为“是”返回值才为“是”,反之为“否”
 
  -o 或(or):两个逻辑值有一个为“是”,返回值就为“是”
 
  4、 文件操作
 
  文件测试表达式通常是为了测试文件的信息,一般由脚本来决定文件是否应该备份、复制或删除。由于test关于文件的操作符有很多,我们只列举一些常用的。
 
  -d 对象存在且为目录返回值为“是”
 
  -f 对象存在且为文件返回值为“是”
 
  -L 对象存在且为符号连接返回值为“是”
 
  -r 对象存在且可读则返回值为“是”
 
  -s 对象存在且长度非零则返回值为“是”
 
  -w 对象存在且可写则返回值为“是”
 
  -x 对象存在且可执行则返回值为“是”
 
  file1 ?Cnt(-ot) file2 文件1比文件2新(旧)
 
  四、循环结构语句
 
  shell常见的循环语句有for循环、while循环、until循环
 
  for 循环
 
  语法:
 


for 变量 in 列表
do
 
  操作
 
done
 

  注:变量是要在循环内部用来指代当前所指代的列表中的那个对象的。
 
  列表是在for 循环的内部要操作的对象,可以是字符串也可以是文件,如果是文件则为文件名。
 
  例:删除垃圾箱中的所有.gz文件
 

#delete all file with extension of "gz" in the dustbin
for I in $HOME/dustbin/*.gz
do
  rm ?Cf $i
  echo "$i has been deleted!"
done
 

  执行结果如下:
 
.f_rmgz
 
  /home/beichen/dustbin/nessus-4.0.0.2.tar.gz has been deleted!
 
  /home/beichen/dustbin/gftp-2.2.1.tar.gz has been deleted!
 
While循环
 
 
 
  语法:
 


while 表达式
do
  操作
done
 

  只要while表达式成立,do和done之间的操作就一直会进行。
 
  until循环
 
  语法:
 


until 表达式
do
  操作
done
 

  重复do和done之间的操作直到表达式成立为止。
 
  例:
 

#test until
#add from 1 to 100
total=0
num=0
until test num ?Ceq 100
do
  total=`expr $total + $num` //注意,这里的引号是反引号,下同
  num=`expr $num+1`
done
echo "The result is $total"
 

  执行结果如下:
 
  The result is 5050!
 
  五、条件语句
 
  Shell程序中的条件语句主要有if语句、case语句;
 
  If语句
 
  语法:
 
 

if 表达式1
then
操作
elif 表达式2
then
  操作
elif 表达式3
then
  操作
  …..
else
  操作
fi
 

  Linux里的if的结束标志是将if反过来写成fi;而elif其实是else if的缩写
 
  其中elif理论上可以有无限多个。
Case语句
 
  语法:
 

case 字符串 in
  值1|值2)
      操作;;
  值3|值4)
      操作;;
  值5|值6)
      操作;;
  *)
  操作;;
esac
 

  case的作用就是当字符串与某个值相同是就执行那个值后面的操作。如果同一个操作对于多个值,则使用”|”将各个值分开。在case的每一个操作的最后面都有两个”;;”,分号是必须的。
 
  例:
 


case $USER in
  beichen)
      echo "You are beichen!";;
  liangnian)
      echo "You are liangnian"; //注意这里只有一个分号

顶(1)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论