linux脚本书写笔记

6月9日,记录init.d的S40network解析

判断是否存在某文件:

 此语句为判断目录/var/run是否存在(! -e /var/run),如果不存在则创建该目录(mkdir -p /var/run)。其中,! -e是一个逻辑运算符,用于判断文件或目录是否存在,而mkdir命令的-p选项表示如果需要的话,也会创建所有必要的父级目录。因此,这个脚本实际上是用于检查并在需要时创建/var/run目录。

而关于! -e的中括号:

添加中括号使得逻辑运算符! -e包含在方括号内,以便它可以作为一个条件表达式。在这个例子中,如果/var/run目录不存在,那么整个条件表达式将被视为真,后面的命令mkdir -p /var/run将被执行。如果条件表达式结果为假,则后面的命令将不会执行。方括号表示测试,将命令行技术和它们的参数文件放在一起并对它们进行测试以查看它们是否为真或假。

赋值语句中运行脚本命令:

 

这条脚本语句的作用是将模块名为"8189fs"的内核模块赋值给变量"mod_status"。具体的操作步骤如下:

  1. 运行lsmod命令,它会列出已加载的内核模块。
  2. 通过管道(|)将命令的输出传递给awk命令。awk是一种文本处理工具,可以对文本进行分割和格式化。
  3. 在awk中使用条件表达式,只选择模块名为"8189fs"的行。$1表示第一个字段,在这里就是模块名。
  4. 使用"print $1"打印匹配行的第一个字段,也就是模块名。
  5. 将匹配的模块名赋值给变量"mod_status"。

最终结果是变量"mod_status"的值为模块名"8189fs",如果没有找到匹配的模块则变量为""(空字符串)。
总的来说,这条脚本语句的作用是获取"8189fs"模块的状态,并将其赋值给一个变量以用于后续处理。
其中,`和'的作用:
在这个脚本语句中,反引号(`)和单引号(')都是用于命令替换,它们的作用是将一个命令的输出替换为它在命令行中的返回值。反引号(`)是较旧的用法,现在大多数人更倾向于使用$()进行命令替换;

  • 在这个脚本语句中,使用反引号将lsmod | awk '$1="8189fs" {print $1}'命令的输出作为字符串嵌入到外部命令中。这里的作用是将整个命令的输出变为一个字符串,并将其赋值给变量"mod_status";
  • 单引号在这个脚本语句中用于保护在其中引用的字符串,以防止在它们内部的特殊字符被解释。如果使用双引号,当引用中包含变量时,变量将被解析并替换为其当前值,而不是作为字符串的一部分;
  • 所以,在这个脚本语句中,单引号(')是用于保护双引号(")中的字符串,以便在命令替换时勿略"8189fs"的引号,并将整个命令替换为一个字符串,并将其赋值给变量"mod_status";
  • 总的来说,反引号(`)和单引号(')都是用于命令替换中的特殊字符,分别用于将命令输出嵌入到命令行命令中,并保护其中引用的字符串,以便在命令替换时勿略特殊字符或变量替换。

 

 

posted @ 2023-06-09 10:32  悠闲的小莫  阅读(33)  评论(0编辑  收藏  举报