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:•针对某脚本文件,指定一个退出状态码。
•运行后,查询其退出状态码,并对其状态进行描述。


1481

被折叠的 条评论
为什么被折叠?



