目录
1、创建shell脚本文件
2、显示消息
3、 环境变量
4、用户变量
5、命令替换
编辑
6、重定向输入与输出
6.1、输出重定向
6.2、输入重定向
编辑
7、执行数学运算
7.1、expr命令
7.2、bc的基本用法
8、退出脚本
完整笔记请前往此处获取: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个,值得注意的是,用户变量是区分大小写的。使用等号将值赋值给用户变量,注意在变量、等号和值之间不能出现空格。
注意:
1、变量名不能以数字开头,但可以包含数字。
2、尽量避免使用shell关键字作为变量名,以免引起混淆。
3、常量的变量名通常使用大写字母,例如 PI=3.14。
如:
只读变量
可以使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
如下所示:
删除变量
可以使用使用 unset 命令可以删除变量。
使用格式:unset variable_name
注意:变量被删除后不能再次使用。unset 命令不能删除只读变量。
在shell中,变量一般视作字符串,可以使用单引号或双引号来定义字符串。
单引号字符串的限制:
1、单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
2、单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号的优点:
1、双引号里可以有变量
2、双引号里可以出现转义字符
5、命令替换
shell脚本中最有用的特征之一就是可以从命令输出中提取信息,并把它赋值给变量。有两种方法可以把命令输出赋值给变量:
- 反引号字符(`)
- $()格式
如下:
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的整数值,也可以用脚本中的变量作为退出码。如:文章来源:https://www.toymoban.com/news/detail-736934.html
文章来源地址https://www.toymoban.com/news/detail-736934.html
状态码 | 描述 |
0 | 命令成功结束 |
1 | 一般性未知错误 |
2 | 不适合的shell命令 |
126 | 命令不可执行 |
127 | 没找到命令 |
128 | 无效的退出参数 |
128+x | 与Linux信号x相关的严重错误 |
130 | 通过Ctrl+C终止的命令 |
255 | 正常范围之外的退出状态码 |
到了这里,关于Linux 系统shell脚本编程笔记——脚本入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!