linux学习day04(shell学习)

  1. shell是一个命令执行器,作用是遵循一定的语法将输入的命令加以解释并传给系统,用户可以用shell来启动、挂起、停止甚至是编写一些程序。shell是用户和linux的桥梁,定义了各种变量和参数,并提供了很多在高阶语言中才具有的控制结构,包括循环和分支,虽然他不是内核的一部分,但是她调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行
  2. 本质上,shell就是命令行命令简单的组合到一个文件里面。
  3. 程序基础
    1. 必须在文件的第一行加   !#/bin/sh 告诉系统他后面的参数用来该文件的执行
    2. chmod +x filename,因为vim编辑过的文件并没有可执行的功能
  4. 变量
    1. 变量名=值 取变量值($){注意变量赋值时,=两边不能有空格},且所有结束语句都不用加分号
    2. 当num=2 $numnd 打印不了时,可以${num}nd来打印
    3. 默认变量
      1. $#:传入脚本的命令行参数个数(和c的区别,c的个数包括命令本身)
      2. $*:所有命令行参数值,在各个参数值间留有空格
      3. $0;命令本身
      4. $1:第一个命令行参数
      5. $2:第二个命令行参数
      6. #!/bin/sh
        echo "number of vars:"$#
        echo "values of vars:"$*
        echo "value of var1:"$1
        echo "value of var2:"$2
        echo "value of var3:"$3
        echo "value of var4:"$4 

         

    4. 局部变量  在变量前加local(和C差不多)
  5. if 格式,
    1. -eq:相同
    2. -ne:不同
    3. -gt:大于
    4. -lt:小于
    5. -ge:大于或等于
    6. -le:小于或小于
    7. -z:为空
    8. -n:不为空
    9. 反引号:取命令的结果
    10. 复制代码
      #!/bin/bash
      a=$1
      b=$2
      if [ -z $a ] || [ -z $b ]
      then
          echo "please enter 2 no"
          exit 1
      fi
      if [ $a -eq $b ] ; then
          echo "number a = number b"
      else if [ $a -gt $b ]
          then
              echo "number a>number b"
          elif [ $a -lt $b ]
              then
                  echo "number a<number b"
          fi
      fi
      复制代码
  6. -e 文件已存在 ;-f文件是普通文件 ;-s文件大小不为0 ;-d文件是一个目录 ;-r文件对当前用户可以读取;-w文件对当前用户可以写入 ;-x文件对当前用户可以执行
    1.   
      #!/bin/sh 
      folder=/home 
      [ -r "$folder" ] && echo "Can read $folder" 
      [ -f "$folder" ] || echo "this is not file"
      && ||可以用于短路
  7. for 
    1.   
      #!/bin/bash 
      for day in Sun Mon Tue Wed Thu Fri Sat
      do
          echo $day
      done 

      统计当前目录下的文件数

    2. #!/bin/bash
      
      counter=0
      for files in *
      do
          counter=`expr $counter + 1`
      done
      echo "There are $counter files in `pwd` we need to process"
  8. while为真时循环
    1. 将用户输入的数字按倒叙方式输出  
      复制代码
      #!/bin/bash
      echo -n "Pleasw enter number : "
      read n
      sd=0
      rev=""
      on=$n
      echo "$n"
      while [ $n -gt 0 ]
      do
          sd=$(( $n % 10 )) # get Remainder
          n=$(( $n / 10 ))  # get next digit
          rev=$( echo $rev$sd)
      done
      echo  "$on in a reverse order $rev"
      复制代码
  9. until为假时循环
    1. 移动一个文件,如果目标位置存在文件,则监视该文件,直到文件被删除后才移动该文件  
      复制代码
      #!/bin/bash
      if [ "$1" = "" ] || [ "$2" = "" ]
      then
          echo "Please enter file name"
          exit 1
      fi
      if [ -e $2 ]
      then
          echo "The file already exists"
          until [ ! -f $2 ]
          do
              sleep 1
          done
      fi
      if [ ! `mv $1 $2` ]
      then
          echo "mv sucessful"
      else
          echo "mv error"
      fi
      复制代码
  10. case
    1.   
      复制代码
      #!/bin/bash 
      echo "Hit a key, then hit return."
      read Keypress 
      case "$Keypress" in
          [A-Z] ) echo "Uppercase letter";;
          [a-z] ) echo "Lowercase letter";;
          [0-9] ) echo "Digit";;
          * ) echo "Punctuation, whitespace, or other";;
      esac 
      复制代码
posted @   风中凌乱的猪头  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示