当前位置:   article > 正文

Linux & Shell 编程基础——构建基本脚本

Linux & Shell 编程基础——构建基本脚本

1. Shell脚本的多个命令处理

  • Shell脚本的关键:能够输入多个命令并处理每个命令的结果,甚至将一个命令的结果传递给另一个命令。
  • 命令串联:可以使用分号(;)将多个命令放在同一行中,使它们依次执行。

2. 创建Shell脚本文件

  • 文本编辑器:使用文本编辑器创建文件,并将Shell命令输入到该文件中。
  • 指定Shell:文件的第一行必须指定要使用的Shell,格式为#!/bin/bash。这里#用于注释,但第一行是例外,!告诉Shell使用哪个解释器来运行脚本。

3. 运行Shell脚本文件

  • PATH环境变量:Shell通过PATH环境变量来查找命令。为了让脚本文件可执行,通常需要将其所在目录添加到PATH中,或者通过绝对/相对路径直接引用脚本文件。
  • 执行权限:如果直接引用脚本文件时遇到Permission denied错误,需要为文件添加执行权限,通常使用chmod +x 脚本文件名命令。

4. 显示消息

  • echo命令:用于在控制台显示文本消息,告诉脚本用户脚本正在做什么。
  • 文本字符串:默认情况下,不需要使用引号来划定要显示的文本字符串。但如果字符串中包含引号,则需要使用另一种引号来界定。
  • 换行与不换行echo命令默认在显示文本后换行。使用-n选项可以阻止换行,使文本字符串和后续命令输出显示在同一行中。

Shell脚本是一种强大的自动化工具,允许用户将多个命令组织在一起,处理命令输出,并通过文本消息向用户反馈脚本的执行情况。创建Shell脚本时,需要指定解释器并赋予文件执行权限。通过echo命令,可以方便地在脚本执行过程中向用户显示信息。

练习1:•构建一个脚本文件执行创建新用户、给新用户分组、查看当前登录的用户

•为刚刚构建的脚本文件添加输出前的提示

•运行该脚本文件查看返回结果

5. 使用变量

  • 变量:在Shell脚本中,变量用于临时存储信息,以便在脚本的其他部分中使用。
  • 环境变量:Shell预定义了一些环境变量,可以在脚本中通过$符号引用。
  • 用户变量:用户可以在脚本中定义自己的变量,它们由字母、数字或下划线组成,长度通常有限制(如不超过20个字符,但具体限制可能因Shell而异),且区分大小写。
  • 赋值:使用等号(=)将值赋给用户变量,但等号两边不能有空格。
  • 引用:通过$符号引用变量。
  • 命令输出赋值:Shell脚本可以从命令输出中提取信息并将其赋给变量,这通过反引号(`)或$()格式实现。

6. 重定向输入和输出

  • 输出重定向
    • 使用大于号(>)将命令的输出重定向到文件中。如果文件已存在,则会被覆盖。
    • 使用双大于号(>>)将命令的输出追加到文件的末尾,而不是覆盖原有内容。
  • 输入重定向
    • 使用小于号(<)将文件的内容作为命令的输入。
    • 内联输入重定向:使用远小于号(<<)后跟一个文本标记来在命令行中直接指定输入数据,直到再次遇到相同的文本标记为止。
  • 示例命令wc命令用于计数文本的行数、词数和字节数,可以通过输入输出重定向来处理文件或内联数据。

7. 管道

  • 管道:管道符号(|)用于将一个命令的输出直接作为另一个命令的输入,无需使用临时文件。
  • 多条管道:可以在一条命令中串联使用多条管道,以实现复杂的数据处理流程。
  • 常用场景:将大量输出通过管道传递给more命令,以便分页查看。

通过这些机制,Shell脚本能够灵活地处理数据、控制命令的执行流程,并实现复杂的自动化任务。

练习2:•查看当前系统的所有用户基本信息,使用重定向命令,将查看结果保存为 username.txt文件。

•使用 wc和重定向命令,查看 username.txt中的文本行数。

 •查看当前系统的所有用户基本信息,不通过重定向的方式,直接查看文本行数。

8.使用expr命令进行数学运算

  • expr是一个用于执行基本数学运算的命令行工具。
  • 使用expr时,数学表达式中的某些字符(如星号*用于乘法)可能需要通过转义字符\进行转义,因为在Shell中这些字符可能有特殊的含义。
  • 例如,计算两个数的乘积并打印结果,可以使用命令expr 3 \* 4(注意星号前的反斜杠)。
  • expr还可以用于执行更复杂的表达式,但语法可能相对繁琐,且对空格和特殊字符的处理需要特别注意。

9.使用双小括号$((expression))进行数学运算

  • 双小括号$((expression))是Bash Shell中用于执行算术扩展的一种更简洁、更强大的方式。
  • 它允许直接在Shell脚本中编写几乎任何算术表达式,而无需担心字符的特殊含义或转义问题。
  • 例如,计算两个数的和并打印结果,可以直接使用echo $((3 + 4))
  • 双小括号内的表达式支持加(+)、减(-)、乘(*)、除(/)、求模(%)等基本算术运算符,以及括号用于改变运算顺序。
  • expr相比,$((expression))语法更简洁,功能更强大,因此在编写Shell脚本时更受推荐。 

练习3:•在shell脚本中用方括号执行以下数学运算

•100*(50-45)

•100/52

•观察输出结果 

10.bash shell中的数学运算

  • bash shell限制:bash shell本身只支持整数运算。对于需要浮点数的运算场景,bash shell显得力不从心。

11.bc计算器

  • 功能:bc(basic calculator)是一种命令行计算器,能够处理整数和浮点数的运算,实际上它更像是一种编程语言。
  • 特性
    • 支持数字(整数和浮点数)。
    • 支持变量(简单变量和数组)。
    • 支持注释(以#或C语言风格的/* ... */开始的行)。
    • 支持表达式和编程语句(如if-then语句)。
    • 支持自定义函数。
  • 控制选项
    • -q选项:在启动时不显示bc的冗长欢迎信息。
    • scale变量:控制计算结果的小数位数,默认值为0(即整数)。

12.在bash脚本中使用bc

  • 命令替换:通过在bash脚本中使用命令替换($(...))的方式,可以将bc命令的输出赋值给变量。这允许你在bash脚本中执行复杂的数学运算,并将结果用于脚本的其他部分。
  • 练习4:•在脚本中使用 bc进行加减乘除运算,要求保留3位小数。 

13.退出状态码(Exit Status)

  • 定义:每个在shell中运行的命令都会在其执行完毕后返回一个退出状态码给shell。这个状态码是一个0到255之间的整数值,用于表示命令的执行结果。
  • 作用:退出状态码允许shell和脚本程序判断之前执行的命令是否成功执行。通常,退出状态码0表示成功,非0值表示发生了某种错误或异常情况。

14.捕获退出状态码

  • 变量$?:Linux提供了一个特殊的变量$?,用于保存上一个已执行命令的退出状态码。通过在命令后立即访问$?变量,脚本可以获取该命令的退出状态码,并根据需要进行后续处理。

15.控制脚本退出状态

  • 默认行为:默认情况下,一个shell脚本会以脚本中最后一个命令的退出状态码作为自己的退出状态码。这意味着,如果脚本中的最后一个命令成功执行(返回0),则脚本也会成功退出;如果最后一个命令失败(返回非0值),则脚本也会以相应的非0值退出。
  • exit命令exit命令允许脚本在结束前显式地指定一个退出状态码。这个命令可以接受一个可选的参数作为退出状态码,如果不提供参数,则默认使用0作为退出状态码。通过在脚本的适当位置使用exit命令,脚本可以在完成其任务后提前退出,并返回一个有意义的退出状态码给调用者。

练习5:•针对某脚本文件,指定一个退出状态码。

•运行后,查询其退出状态码,并对其状态进行描述。


本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号