0


Linux 系统shell脚本编程笔记——脚本入门

完整笔记请前往此处获取:https://download.csdn.net/download/qq_55908180/88366003

Shell的核心是命令行提示符

1、创建shell脚本文件

要将shell命令放到文本文件中,首先需要用文本编译器来创建一个文件,然后把命令输入到文件中。在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。格式是: #!/bin/bash 一般在shell脚本中,井号(#)用作注释。Shell不会处理脚本中的注释行,但是,脚本文件中第一行除外,#后面的感叹号会告诉shell用哪个shell运行脚本。例如:

  1 #!/bin/bash
  2 
  3 date
  4 who

在编译之前需要改一下test1的权限,因为在创建新文件时只有文件的属主与属组才有读写权限,所以需要用:chmod u+x test1 之后再编译就可以正常编译。

2、显示消息

可以通过echo命令实现输出的效果。如:

在默认情况下,不需要使用引号将要显示的文本字符串划出来,但有时字符串中出现引号的话就会比较麻烦。如:

此时就需要用单引号或者双引号来划定文本字符串,如:

也可以把echo语句添加到shell脚本中任何需要显示额外信息的地方。如:

  1 #!/bin/bash
  2 
  3 echo The time and date are:
  4 date
  5 echo "Let's see who's logged into the system:'"
  6 who

3、 环境变量

在shell脚本中,可以在环境变量名之前加上美元符($)来使用这些环境变量。如:

  1 #!/bin/bash
  2 
  3 echo "User info for useid: $USER"
  4 echo UID: $UID
  5 echo HOME: $HOME

结果显示:

注意:echo命令中环境变量会在脚本运行时替换为当前值,脚本在引号中出现美元符时,脚本会以为你在引用一个变量,这样输出的可能不是我们的期望值,所以想要输出我们期望值,可以在美元符前放一个反斜线\。因为反斜线允许shell脚本将美元符解读为实际的美元符,而不是变量。如:

4、用户变量

除了环境变量,shell脚本也允许在脚本中定义和使用自定义的变量,用户变量可以是任何由字母、数字和下划线组成的字符串,但是长度不超过20个,值得注意的是,用户变量是区分大小写的。使用等号将值赋值给用户变量,注意在变量、等号和值之间不能出现空格。如:

5、命令替换

shell脚本中最有用的特征之一就是可以从命令输出中提取信息,并把它赋值给变量。有两种方法可以把命令输出赋值给变量:

  1. 反引号字符(`)
  2. $()格式

如下:

6、重定向输入与输出

有时候你想保存某个命令的输出而不仅是让它只显示在显示器上,shell提供了几个操作符,可以把命令的输出重定向到另外一个位置。重定向可以用于输入,也可以用于输出

6.1、输出重定向

最基本的重定向把命令输出送到一个文件中。Shell用大于号(>)来实现这一功能。把之前显示器上出现的命令输出保存到指定的输出文件中,如:

如果你想让命令的输出追加到已有文件中,而不是覆盖文件原有内容,可以用远大于号(>>)来追加数据,如:

6.2、输入重定向

输入重定向的输出重定向时正好相反的。输入重定向是把文件的内容重定向到命令,而不是把命令的输出重定向到文件中。

输入重定向符号是小于号(<):记忆方法:在命令行中,命令在左侧,重定向符可以理解为指向数据流动的方向,小于号说明是数据是在从输入文件流向命令。如:

Wc命令可以对文本中的数据进行计数,在默认情况下会输出三个值,依次为:文本的行数;文本的词数;文本的字节数。

还有一种输入重定向的方法,叫做内联输入重定向。这种方法不需要使用文件进行重定向,只需要在命令行中指定用于输入重定向的数据就可以了。内联输入重定向的符号是远小于号(<<)。除了这个符号,还要指定一个文本标记用来划分输入数据的开始和结束。注意:任何字符串都可以作为文本标记,但是在数据的开始和结尾文本标记必须一致。如:

7、执行数学运算

对于shell脚本来说,有两种途径可以用来进行数学运算。

7.1、expr命令

Expr命令允许命令在命令行上处理数学表达式,但是很笨拙。

操作符

描述

ARG1 | ARG2

如果ARG1既不是null也不是0,返回ARG1,否则返回ARG2

ARG1 & ARG2

如果没有参数是null或者为0,返回ARG1,否则返回0

ARG1 < ARG2

如果ARG1小于ARG2,返回1,否则为0

ARG1 <= ARG2

如果ARG1小于或等于ARG2,返回1,否则为0

ARG1 = ARG2

如果ARG1等于ARG2,返回1,否则为0

ARG1 != ARG2

如果ARG1不等于ARG2,返回1,否则为0

ARG1 >= ARG2

如果ARG1大于或等于ARG2,返回1,否则为0

ARG1 > ARG2

如果ARG1大于ARG2,返回1,否则为0

ARG1 + ARG2

返回ARG1和ARG2的算数运算和

ARG1 - ARG2

返回ARG1和ARG2的算数运算差

ARG1 * ARG2

返回ARG1和ARG2的算数乘积

ARG1 / ARG2

返回ARG1和ARG2的算数商

ARG1 % ARG2

返回ARG1和ARG2的算数余数

使用方括号

在把一个数学运算结果赋值给某个变量时,可以用美元符和方括号把数学表达式包围起来。如:

这种技术也适用于脚本。如:

值得注意的是:bash shell 数学运算符只支持整数运算,这是一个对进行任何实际的数学运算的巨大的限制。

浮点解决方案

有几种方法能够克服数学运算的整数限制。最常见的方法是使用内建的bash计算器bc。

7.2、bc的基本用法

Bash计算器能够识别到:

数字(整数和浮点数)

变量(简单变量和数组)

注释(以#或者C语言中的/* */开始的行)

表达式

编程语言(比如if-then语句)

函数

可以在shell提示符下通过bc命令访问bash计算器。如:

浮点运算是借助内建变量scale控制的,必须把这个值设置为你希望保留的小数位数,scale默认为0。 -q命令行选项可以不显示bash的欢迎信息。如:

除了普通数字,bash计算器还支持变量。如:

在脚本中使用bc

可以不使用数字表达式值,也可以用shell脚本定义好的变量。如:

一旦变量被赋值,也可以用于其他的运算。如:

但是这种方法只适用于较短的运算,如果涉及较多的数字,需要进行大量的运算,可以使用内联输入重定向来解决这个问题。如:

8、退出脚本

在默认情况下,shell脚本会以脚本的最后一个命令的退出状态码退出。如:

也可以在退出时设置返回自己的退出码,使用exit命令。注意:退出状态为0~255的整数值,也可以用脚本中的变量作为退出码。如:

Linux退出状态码
状态码描述0命令成功结束1一般性未知错误2不适合的shell命令126命令不可执行127没找到命令128无效的退出参数128+x与Linux信号x相关的严重错误130通过Ctrl+C终止的命令255正常范围之外的退出状态码

标签: linux 笔记 ubuntu

本文转载自: https://blog.csdn.net/qq_55908180/article/details/130630264
版权归原作者 TXFBAP 所有, 如有侵权,请联系我们删除。

“Linux 系统shell脚本编程笔记——脚本入门”的评论:

还没有评论