shell脚本入门详解及其实例(2)

 

1 #!/bin/bash 2 read -p "请输入一个文件路径:" file 3 #判断文件是否存在 4 `ls $file &> /dev/null` 5 #若存在,判断文件类型并输出 6 if [ $? -eq 0 ];then 7 style=`ls -ld $file | head -c1` 8 case $style in 9 -) 10 echo "这是一个普通文件" 11 ;; 12 d) 13 echo "这是一个目录文件" 14 ;; 15 l) 16 echo "这是一个链接文件" 17 ;; 18 *) 19 echo "这是其他类型文件" 20 ;; 21 esac 22 #若不存在,提示并退出 23 else 24 echo "该文件不存在" 25 exit 2 26 fi 27 28 #删除变量 29 unset file style

 

shell脚本入门详解及其实例

二、循环语句

在我们的脚本中,肯定也少不了对某一段代码重复运行多次的操作,此时,我们就会用到循环语句。循环语句中,都是有进入条件和退出条件的,循环的次数也分为事先已知事先未知(事先已知就是我们知道循环的具体次数,事先未知则是指当满足某一条件就进行循环,但是次数是不确定的。)。接下来,我们就来看看关于循环语句的用法。

2.1 for循环

for循环的执行机制是:一次将列表中的元素赋值给“变量名”;每次赋值后即执行一次循环体;直到列表中的元素耗尽,循环结束。基本的语法有两种:

1)for 变量名 in 列表 ; do

循环体

done

关于列表的生成方法,如下:

①直接给出列表

②整数列表:

(a){start…end}

(b)`seq start end`

③返回列表的命令

$(COMMAND)

④使用glob通配符如:

*.sh

⑤变量引用

$i,$*

2)for (( exp1; exp2; exp3 )); do

循环体

done

更清晰的可以从下图中看出:

shell脚本入门详解及其实例

Example:

1)打印九九乘法表

 

1 #!/bin/bash 2 #判断i的值是否在1-9 3 for i in {1..9};do 4 # 判断j的值是否在1-$i 5 for j in `seq 1 $i`;do 6 # 若在,则打印i*j的值 7 echo -en "$i*$j = $[$i*$j]\t" 8 done 9 echo 10 done 11 12 #删除变量 13 unset i j

 

shell脚本入门详解及其实例

2)输入正整数n,计算1+…+n的和

 

1 #!/bin/bash 2 #定义变量 3 sum=0 4 read -p "请输入一个正整数:" num 5 #判断num是否是正整数 6 if [[ $num =~ ^[[:digit:]]+$ ]];then 7 # 若是,当i在1-$num时,输出sum值 8 for i in `seq 1 $num`;do 9 let sum+=$i 10 done 11 echo "sum=$sum" 12 #若不是,提示输出正整数 13 else 14 echo "请输入一个正整数!" 15 fi 16 17 #删除变量 18 unset i sum num

 

shell脚本入门详解及其实例

2.2 while循环

while循环比for循环略复杂一些,具体语法如下:

while CONDITION; do

      循环体

done

注意:1、进入条件:CONDITION为true;退出条件:CONDITION为false。

2、CONDITION为循环控制条件:进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;知道条件测试状态为“false”终止循环。

3、CONDITION一般应该有循环控制变量;此变量的值会在循环体不断地被修正。

Example:

1)计算100以内所有正奇数之和

 

1 #!/bin/bash 2 #定义变量 3 i=1 4 sum=0 5 #当i<100时,执行下面语句 6 while [ $i -le 100 ];do 7 #当i为奇数时,另sum=sum+I,i=i+1 8 while [ $[i%2] -eq 1 ];do 9 let sum+=$i 10 let i+=1 11 done 12 # 当i不为奇数时,i=i+1 13 let i+=1 14 done 15 #输出结果 16 echo "sum=$sum" 17 18 #删除变量 19 unset i sum

 

2.3 until循环

until循环的语法和while的语法类似,但是进入和退出的条件却刚好相反,所以不常用,只要我们了解即可。具体语法如下:

until CONDITION; do

  循环体

done

注意:1、进入条件:CONDITION为false;退出条件:CONDITION为true。

2、do和done成对出现。

Example:

1)循环输出1-10

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13481.html