当前位置:   article > 正文

Linux学习总结(Shell脚本、查看内核模块)_linux if else if语句格式

linux if else if语句格式

  目录

一、Shell脚本

1、判断结构

(1)if 结构

(2)if / else 结果

 (3)if / elif / else 结构

 (4)case 结构

2、循环结构

(1) for 循环

(2)while 循环

(3)unlit 循环

3、 break 与 continue

(1)break

(2)continue 

 二、查看内核模块

1、 lsmod 命令

2、modinfo 命令

3、modprobe 命令

4、rmmod 命令


      学习Linux的Shell脚本、查看内核模块

一、Shell脚本

1、判断结构

(1)if 结构

      if 语句是最简单的判断结构,它对条件进行判断,如果判断结果为真,则执行下面的命令,其判断格式有两种形式

  1. if expression
  2. then
  3. 命令语句
  4. fi

或者

  1. if expression; then
  2. 命令格式
  3. fi

      在上述格式中,expression表示条件表达式,如果expression后面没有“ ; ”符号,则then要另起一行,若有“ ; ”符号,则then要与expression处于同一行,expression后面要用“ ; ”符号隔开,且中间要有一个空格。最后的fi表示判断结构结束。

      例如:编写一个脚本chapter1.sh,判断在当前目录下是否存在一个名为name.yaml的文件

进入编辑

编辑内容,保存退出

执行

(2)if / else 结果

       if / else结构指如果满起条件,则执行then后面的操作:如果不满足条件,则执行else后面的操作。例如,判断一个数是否等于100,如果等于,则执行then后面操作;如果不等于,则执行else后面的操作。

if / else结构的格式

  1. if expression
  2. then
  3. 命令格式1
  4. else
  5. 命令格式2
  6. fi

      在上述格式中,如果expression条件为真,则执行“ 命令语句1 ”,否则执行“ 命令语句2 ”。当然,then也可以与expression在同一行,使用“ ; ”符号分隔开。

      例如:编写一个脚本chapter3.sh,用于从键盘读取用户输入的字符串,如果字符串为空,则输出为空;如果字符串不为空,则输出字符串

进入编辑,保存退出

 执行

如果没有输入直接回车得到的结果为

 (3)if / elif / else 结构

      if / elif / else 结构可以进行多种情况的判断。例如,对一个学生的成绩进行判断,如果大于90分则为A,否则判断是否大于80;如果大于80分则为B,否则再判断是否大于70分;如果大于70分则为C,否则为D。

if / elif / else 结构的格式

  1. if expression1; then
  2. 命令语句1
  3. elif expression2; then
  4. 命令语句2
  5. elif expression3; then
  6. 命令语句3
  7. ...
  8. else
  9. 命令语句 n
  10. fi

      在上述语法格式中,如果expressionl条件不成立,则直接进行expression2条件的判断;如果expression2条件不成立,则直接进行expression3条件的判断;以此类推,直到条件表达式成立,执行相应的命令语句,或者直到所有的条件都判断完毕,所有条件都不成立,则执行else后面的命令语句。

      例如:编写一个脚本chapter4.sh,从键盘读取学生成绩,判断学生成绩级别

进入编辑,保存退出

 

 执行

 (4)case 结构

       case 结构也用于进行判断,只是它的判断条件只能常量或正则表达式,

语法格式

  1. case "$var" in
  2. var1)
  3. 命令语句1;;
  4. var2)
  5. 命令语句2;;
  6. ...
  7. *)
  8. 命令语句n;;
  9. esac

      在上述语法格式中,var变量会与varl、var2、……逐一进行比较,如果var与varl匹配,则执行命令语句1,然后跳转到esac结束语句;如果var与var2匹配,则执行命令语句2,然后跳转到esac结束语句;如果所有的变量都没有匹配成功,则会匹配“ * ”符号,执行它后面的命令语句n,然后接着执行esac结束语句。

      例如:编写一个脚本chapter5.sh,让用户输入一个整数值,根据输入的整数值判断是周几

进入编辑,保存退出

  执行

2、循环结构

(1) for 循环

      for 循环是Shell编程中最常用的循环,它通常从一个列表中读取元素赋予变量,然后执行循环体中的命令语句,执行完毕之后再次从列表中读取元素赋予变量,再次执行循环体中的命令语句,如此循环,直到列表中的元素被读取完毕,

语法格式

  1. for var in {list}
  2. do
  3. 命令语句
  4. done

      在上述语法格式中,for var in {list} 是循环条件,do··done之间是循环体。for循环在执行时,会从列表中取第一个元素赋予var变量,执行循环体中的命令语句;接着从列表中读取第二个元素赋予var变量,执行循环体中的命令语句,直到列表中的值被读取完毕,循环结束。

       例如:编写一个脚本chapter6.sh,循环输出1~5这5个数值

进入编辑,保存退出

   执行

       在for循环中,如果列表中的元素是连续的整数,则中间可以使用省略 chapter6.sh脚本中循环列表还可以写成如下形式 :

       在for循环中的列表还可以按步长进行跳跃,例如,列表中元素是1~100,每次只读取奇数,则可以2为步长跳跃读取,代码如下所示:

        Shell中的for循环,除了使用列表外,还有类似C语言风格的for循环,格式如下所示:

  1. for((expression1; expression2; expression3))
  2. do
  3. 命令执行语句
  4. done

      expression1是初始化表达式,expression2是循环条件,expression3是操作表达式。它们的执行过程与C语言的for循环是相同的。由于C语言风格的for循环只适用于次数已知的循环,而且不适用于字符串、文件作为变量的循环,因此它在Shell编程中较少使用,此处不再赘述。

(2)while 循环

      与for循环相比,while 循环要简单一些。它只有一个判断条件,如果条件为真,则执行循环体中的命令语句;如果条件为假,则退出循环。

循环格式

  1. while expression
  2. do
  3. 命令格式
  4. done

      上述语法格式中,如果 expression 为真,则执行循环体;如果为假,则退出循环。在循环执行过程中,必须要有退出循环条件以避免陷入死循环。

      例如:编写一个脚本chapter7sh,循环输出1~5这5个数值

进入编辑,保存退出

    执行

       例如:编写脚本chapter8sh,使用while循环输出当前目录下的所有文件,要从命令行传递参数

进入编辑,保存退出

     执行

(3)unlit 循环

      until循环的格式与while循环类似,但在判断循环条件时,只有循环条件为假才会去执
行循环体;如果循环条件为真,则退出循环,

语法格式

  1. until expression
  2. do
  3. 命令格式
  4. done

       在上述语法格式中,直到expression条件成立才会退出循环,这一点与for循环、while循环正好是相反的,读者要尤其注意。

       例如:编写脚本chapter9.sh,使用until循环输出1~5这5个数值

进入编辑,保存退出

 

      执行

3、 break 与 continue

(1)break

       break用于强行退出循环,它会忽略循环条件的作用,退出循环之后,它接着执行循环之外的命令。break可以用在for循环、while循环、until循环中

       例如: 编写脚本chapter10.sh,当num变量值为3时,退出循环

进入编辑,保存退出

   执行

       由输出结果可知,脚本只输出了1、2、3这3个数值,当num变量值为3时,break循环控制符强行退出了循环,退出循环之后,脚本又执行了循环之外的echo命令。需要注意的是,如果脚本中有多层循环,则break只能退出本层循环,无法退出外层的循环。

(2)continue 

      continue 用于终止本次循环,接着执行下一次循环,它不会退出循环,只是跳过本次循环,循环会按照循环条件正常退出。

       例如:编写一个脚本 chapter12.sh,输出1~50内可以被5整数的数

进入编辑,保存退出

    执行

 二、查看内核模块

1、 lsmod 命令

      lsmod 命令可以列出目前系统中已经加载的所有模块,这个命令没有任何参数,直接执行即可

例如

...

        以上命令执行后打印的内核模块信息分为3列:第一列Module表示模块名称,第二列Size 表示模块占用内存大小(字节),第三列Used by声明模块是否被其他程序使用。如果第三列为0,则表明没有程序在使用这个模块,它可以随时被卸载;非0则表明有程序在使用它。例如fuse模块,Used by的值为3,表示有3个程序在使用这个模块,它就无法被卸载。

       如果要查看具体某一个模块是否被加载,可以使用如下命令:

lsmod | grep 模块名

       如果模块被加载了,那么它会显示出模块的各项信息;如果模块没有被加载,则不会输出任何信息。

       例如:查询一个已经被加载过的模块btusb,它会输出模块名、模块大小和被占用情况


 

        例如:下面再查询一个没有被加载的模块,如vfat模块,它用于处理长文件名

         命令执行后没有输出任何,表明模块vfat未被加载。

2、modinfo 命令

       Linux 提供了modinf 命令来看内核模块信息,

命令格式

modinf [ 选项 ] 模块名
modinf 命令的常用选项
选项说明
-a显示模块开发人员信息
-d显示模块的使用说明
-l显示模块遵循的规范,都遵循GPL规范
-h显示帮助信息
-p显示模块所支持的参数
-V显示模块版本信息

      用不同的命令行参数可以查看模块的相应信息,如果在查看模块时没有使用任何选项,则会输出关于这个模块的所有信息。

      例如,查看sg驱动模块,这个模块能够将SCSI命令直接发送给相应设备并获得返回信息

        这里显示了sg模块的全部信息,包括作者、版本、遵循GPL规范、使用说明等。

3、modprobe 命令

      modprobe 命令不仅可以动态加载模块,通过modprobe 命令加载、卸载模块时,

命令格式

modprobe [ 选项 ] 模块名
modprobe 命令的常用选项
选项说明
-a加载命令行中的所有模块
-C重载默认配置文件
-c查看模块的配置文件
-d模块目录,默认情况下是模块的根目录
-f强制加载模块
-V显示版本信息
-v显示程序在做什么,通常在出错的情况下才使用
-n可以和-v 选项一起使用,在调式的时候非常有用
-r卸载模块

4、rmmod 命令

       rmmod 命令用来卸载模块,modprobe 命令和insmod 命令加载的模块都可以使用这个命令完成卸载。

命令格式

rmmod [ 选项 ] 模块名
rmmod 命令的常用选项
选项说明
-v显示命令执行的详细信息,一般只有出错时才会显示信息
-f强制卸载模块
-s向系统日志发送错误信息
-V显示版本信息

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/147768
推荐阅读
相关标签
  

闽ICP备14008679号