自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 shell处理用户输入——移动参数

在使用shift命令时,默认情况下会将每个位置的变量值都向左移动一个位置。因此,变量$3的值会移入$2,变量$2的值会移入$1,而变量$1的值则会被删除(注意,变量$0的值,也就是脚本名,不会改变)。跟字面上的意思一样,shift命令会根据命令行参数的相对位置进行移动。测试完第一个参数后,shift命令会将所有参数移动一个位置。这是遍历命令行参数的另一种好方法,尤其是在不知道到底有多少参数的时候。你可以只操作第一个位置变量,移动参数,然后继续处理该变量。使用shift命令的值可以轻松地跳过不需要的参数。

2024-07-19 08:30:00 111

原创 shell处理用户输入——特殊参数变量

在bash shell中有一些跟踪命令行参数的特殊变量。

2024-07-18 15:53:24 378

原创 shell处理用户输入——传递参数

向shell脚本传递数据的最基本方法是使用命令行参数。命令行参数允许运行脚本时在命令行中添加数据:本例向脚本addem传递了两个命令行参数(10和30)。脚本会通过特殊的变量来处理命令行参数。接下来将介绍如何在bash shell脚本中使用命令行参数。

2024-07-17 19:38:37 386

原创 shell结构化命令——处理循环的输出

shell创建了文件test23.txt并将for命令的输出重定向至该文件。for命令结束之后,shell一如往常地显示了echo语句。for命令的输出通过管道传给了sort命令,由后者对输出结果进行排序。运行该脚本,可以看出结果已经按state的值排好序了。在shell脚本中,可以对循环的输出使用管道或进行重定向。shell会将for命令的结果重定向至文件output.txt,而不再显示在屏幕上。

2024-07-17 18:47:41 202

原创 shell结构化命令——循环控制

你可能认为循环一旦启动,在结束之前就哪都去不了了。事实并非如此。有两个命令可以控制循环的结束时机。这两个命令的用法各不相同。下面将介绍如何使用两者控制循环操作。

2024-04-14 17:37:02 742 1

原创 shell结构化命令——循环处理文件数据

第一个IFS值解析出/etc/passwd文件中的各行。内层for循环接着将IFS的值修改为冒号,以便解析出/etc/passwd文件各行中的字段。通过修改IFS环境变量,能强制for命令将文件中的每一行都作为单独的条目来处理,即便数据中有空格也是如此。从文件中提取出单独的行后,可能还得使用循环来提取行中的数据。典型的例子是处理/etc/passwd文件。这要求你逐行遍历该文件,将IFS变量的值改成冒号,以便分隔开每行中的各个字段。内层循环会解析出/etc/passwd文件各行中的字段。

2024-02-17 16:29:42 409 1

原创 shell结构化命令——嵌套循环

这个被嵌套的循环(也称为内层循环)会在外部循环的每次迭代中遍历一遍它所有的值。注意,两个循环的do命令和done命令没有任何差别。bash shell知道执行第一个done命令时,指的是内层循环而非外层循环。每个循环都必须修改在测试条件中用到的值,否则循环就会无止境进行下去。循环语句可以在循环内使用任意类型的命令,包括其他循环命令,这称为嵌套循环。注意,在使用嵌套循环时是在迭代中再进行迭代,命令运行的次数是乘积关系。同样,shell能够区分开内层for循环和外层while循环各自的do命令和done命令。

2024-02-15 19:00:27 469 1

原创 shell结构化命令——until命令

与while命令工作的方式完全相反,until命令要求指定一个返回非0退出状态码的测试命令。只要测试命令的退出状态码不为0,bash shell就会执行循环中列出的命令。与while命令类似,你可以在until命令语句中放入多个test command。最后一个命令的退出状态码决定了bash shell是否执行已定义的other commands。只要该变量的值等于0,until命令就会停止循环。shell会执行指定的多个测试命令,仅当最后一个命令成立时才停止。

2024-01-21 20:24:39 461

原创 shell结构化命令——while命令

while命令在某种程度上糅合了if-then语句和for循环。while命令允许定义一个要测试的命令,只要该命令返回的退出状态码为0,就循环执行一组命令。它会在每次迭代开始时测试test命令,如果test命令返回非0退出状态码,while命令就会停止执行循环。

2024-01-21 20:24:17 660

原创 shell结构化命令——C语言风格的for命令

如果你从事过C语言编程,那么可能会惊讶于bash shell中for命令的工作方式。在C语言中,for循环通常会定义一个变量,然后在每次迭代时更改。程序员通常会将这个变量用作计数器,每次迭代时让计数器增1或减1。bash的for命令也提供了这个功能。本次将展示如何在bash shell脚本中使用仿C语言的for命令。

2024-01-21 19:24:40 348

原创 shell结构化命令——for命令

重复执行一系列命令在编程中很常见。你经常需要重复多个命令直至达到某个特定条件,比如处理目录下的所有文件、系统中的所有用户或是文本文件中的所有行。bash shell提供了for命令,以允许创建遍历一系列值的循环。每次迭代都使用其中一个值来执行已定义好的一组命令。for命令的基本格式如下:docommandsdone你需要提供用于迭代的一系列值作为list参数。指定这些值的方法不止一种。在每次迭代中,变量var会包含列表中的当前值。

2024-01-20 23:48:00 2025

原创 shell结构化命令——case命令

case命令会将指定变量与不同模式进行比较。如果变量与模式匹配,那么shell就会执行为该模式指定的命令。你可以通过竖线运算符在一行中分隔出多个模式。星号会捕获所有与已知模式不匹配的值。你经常会发现自己在尝试计算一个变量的值,在一组可能得值中寻找特定值。有了case命令,就无须再写大量的elif语句来检查同一个变量的值了。case命令提供了一种更清晰的方法来为变量每个可能的值指定不同的处理选择。elif语句会不断检查if-then,为比较变量寻找特定的值。

2024-01-19 22:26:40 521 1

原创 shell结构化命令——if-then的高级特性

bash shell还提供了3个可在if-then语句中使用的高级特性。接下来将详细描述各个特性。

2024-01-18 07:45:00 510 1

原创 shell结构化命令——复合条件测试

使用AND布尔运算符时,两个测试条件都必须满足。第二个测试会检查在用户的$HOME目录中是否有名为newfile的文件,以及用户是否有该文件的写权限。如果两个测试条件有任意一个未通过,那么if语句就会失败,shell则执行else部分的命令。如果两个测试条件都通过了,那么if语句就会成功,shell就会执行then部分的命令。如果任意条件为真,那么then部分的命令就会执行。第一种布尔运算使用布尔运算符AND来组合两个条件。要执行then部分的命令,两个条件都必须满足。可以使用以下两种布尔运算符。

2024-01-17 08:15:00 382

原创 shell结构化命令——test命令

到目前为止,我们在if语句行中看到的都是普通的shell命令。你可能想知道if-then语句能否测试命令退出状态码之外的条件。答案是不能。但是,在bash shell中有个好用的工具可以帮你使用if-then语句测试其他条件。test命令可以在if-then语句中测试不同的条件。如果test命令中列出的条件成立,那么test命令就会退出并返回退出状态码0。这样if-then语句的工作方式就和其他编程语言中的if-then语句差不多了。

2024-01-16 16:16:51 1767 1

原创 shell结构化命令——嵌套if语句

在/home/NoSuchUser目录被删除之前,这个测试脚本执行的是elif语句,返回0值的退出状态。因此,elif的then代码块中的语句得以执行。如果elif之后的命令的退出状态码是0,则bash会执行第二个then语句部分的命令。要检查/etc/passwd文件中是否存在某个用户名以及该用户的主目录是否尚在,可以使用嵌套的if-then语句。注意 记住,在elif语句中,紧跟其后的else语句属于elif代码块,不属于之前的if-then语句的代码块。有时需要再脚本中检查多种条件。

2024-01-15 16:52:48 1351 1

原创 shell结构化命令——if-then-else语句

在if-then语句中,不管命令是否成功执行,你都只有一种选择。如果命令返回一个非0退出状态码,则bash shell会继续执行脚本中的下一条命令。在这种情况下,如果能够执行另一组命令就好了。这正是if-then-else语句的作用。当if语句中的命令返回退出状态码0时,then部分中的命令会被执行,这跟普通的if-then语句一样。当if语句中的命令返回非0退出状态码时,bash shell会执行else部分中的命令。跟then部分一样,else部分可以包含多条命令。fi语句说明else部分结束。

2024-01-14 23:03:33 373

原创 shell结构化命令——使用if-then语句

由于这是个错误的命令,因此会产生一个非0的退出状态码,bash shell因此跳过了then部分的echo命令。bash shell的if语句会执行if之后的命令。如果该命令的退出状态码是其他值,则then部分的命令不会被执行,bash shell会接着处理脚本中的下一条命令。bash shell 会将这些命令视为一个代码块,如果if语句行命令的退出状态值为0就,那么代码块中所有的命令都会被执行;)放在待求值的命令尾部,可以将then语句写在同一行,这样看起来更像其他编程语言中的if-then语句。

2024-01-14 19:54:11 686

原创 构建shell基础脚本——退出脚本

shell中运行的每个命令都使用退出状态码来告诉shell自己已经运行完毕。退出状态码是一个0~255的整数值,在命令结束运行时由其传给shell。你可以获取这个值并在脚本中使用。

2024-01-13 08:00:00 770 1

原创 构建shell基础脚本——执行数学运算

编程语言的一项至关重要的特性是数学运算能力。在shell脚本中,执行数学运算有两种方式。

2024-01-12 11:03:05 1202 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除