shell脚本编程

本文详细介绍了Shell编程的基本流程,包括创建和执行Shell文件、设置变量(用户自定义、位置、预定义),以及Shell的功能性语句如条件判断、循环控制。通过实例展示了如何使用if...else...、case...esac结构进行条件判断,以及for和while循环的用法。此外,还探讨了break和continue的控制语句以及Shell函数的创建。
摘要由CSDN通过智能技术生成

shell编程的基本过程

1.建立shell文件(后缀不一定要为.sh,只是为了方便识别文件类型)

2.赋予执行权限,用chmod指令(如果在共享文件夹下不需要再用chmod赋予执行权限)

3.执行文件(直接在命令行上调用shell程序,不需要像我们的c一样需要编译才能调用)

shell变量

1.用户自定义变量

不支持数据类型,任何赋给变量的值都被shell解释为一串字符,命名规则同C++

注意在给变量赋值时,等号两边都没有空格,要调用变量的值,要在前面加上符号$

#!/bin/bash
WORD="hello"
echo $WORD

有时候变量名容易和其他文字混肴,可以加上花括号

num=2
echo "this is the ${num}nd"

2.位置变量即命令行参数

$0:程序名

$1,$2........$9:分别是第一个到第九个命令行参数,如果是10之后的要怎么表示呢?

很简单我们用括号括起来就行了${10}

3.预定义变量

 

注:$?往往用来接收上一个指令的退出状态,正常退出为0,否则为非0,在shell脚本编程中一般我们返回值为0则为真,为1则为假,注意和c语言中区分开来。

4.环境变量

shell功能语句 

1.说明性语句

以#开头到该行结束,不被解释执行,一般用来解释程序功能,以免时间过长忘记,或方便别人理解使用。

2.功能性语句

任意的shell命令,用户程序等,常用的有

 注意乘法*要使用转义符\

 

test:返回值为0为真,返回值为1为假

 

 

3.结构性语句

条件语句 if.......then.......fi

 if......then.......else.......fi

 我们来看几个例子:

1.输入分数判断等级

   #!/bin/bash
   echo -n "please input score:"
   read s
   if [ $s -lt 0 -o $s -gt 100 ]
   then
      echo "input err"
      exit
   fi
  
  if [ $s -ge 90 -a $s -le 100 ]
  then
     echo "A"
  elif [ $s -ge 60 -a $s -lt 90 ]
  then
     echo "B"
  elif [ $s -ge 0 -a $s -lt 60]
  then
      echo "F"
 fi

多路分支语句 case.......esac

 我们来看一个例子,发现我们if后面语句是否和c语言类似,这里如果我们在shell脚本编写想用c语言的语法要用双括号括起来并且括号之间不能有空格

  #!/bin/bash
   echo -n  "please input score: "
   read s
   if ((s > 100 || s < 0))
   then
       echo "input err"
       exit
   fi
   
  case `expr $s / 10 ` in
      9 | 10)
         echo "A"
          ;;
      6 | 7 | 8)
          echo "B"
          ;;
      *)
          echo "F"
          ;;
  esac

循环语句 for....do......done

 我们来看一个例子:用shell脚本完成1-100的和计算

注意在shell中涉及到算术运算都要用expr指令

#!/bin/bash
   n=0
   for i in `seq 1 1 100 `
   do
       n=`expr $n + $i`
   done
   echo "1-100的和为$n"

例2:用shell脚本完成水仙花数的输出

特别要注意空格的使用!!!!

   #!/bin/bash
   for i in `seq 100 999 `
   do
      j=`expr $i % 10`
      k=`expr $i / 10 % 10`
      m=`expr $i / 100`
      n=`expr $j \* $j \* $j + $k \* $k \* $k + $m \* $m \* $m`
      if [ $n -eq $i ]
       then
          echo "$i"
      fi
  done
        

例3:用shell脚本打印一个三角形

   #!/bin/bash
   echo -n  "请输入你要打印三角形的行数: "
   read N
   for i in `seq 1 $N`
   do
       k=`expr $N - $i`
       for j in `seq 1 $k`
       do
           echo -n " "
      done
      h=`expr 2 \* $i - 1`
      for j in `seq 1 $h`
      do
          echo -n "*"
      done
      echo ""
  done

循环语句 while....do......done

 循环控制语句 break和continue

 shell函数

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值