linux_shell学习(1)
1.1在终端中显示输出
1.1.1 预备知识
shell脚本通常以#! /bin/bash起始,其中#!位于解释器路径之前,/bin/bash是bash的解释器命令路径,bash将以#开头的行视为注释,脚本中只有第一行可以使用#!来定义解释该脚本所用的解释器
脚本的执行方式有两种:
(1)将脚本名作为命令行参数

(2)授予脚本执行权限,将其变为可执行文件

如果将脚本作为bash的命令行参数来运行,就用不着使用#!了,可以利用#!来实现脚本的独立运行。可执行脚本使用#!之后的解释器路径来解释脚本。
赋予脚本可执行权限

这样使得所有用户可以按照下列方式执行该脚本(./表示当前目录)

1.1.2 实战演练
echo是用于终端打印的最基本命令,只需要将文本放入双引号中,echo命令就可以将其中的文本在终端中打印出来,不适用双引号也可以得到同样的输出结果:

使用单引号:

他们看起来很相似,但是都有特定的用途和作用。双引号允许shell解释字符串中出现的特殊字符,单引号不会对其做任何解释。
l 举例如下;

如果需要打印!这样的特殊字符,不能将其放入双引号中,而是使用单引号,或者在特殊字符之前加上转义字符\,例如:

如果不使用引号,就无法在echo中使用分号,因为分号在bash shell中用作命令间的分隔符,如下,这条命令会将echo hello作为一个命令,将hello作为另一个命令:

另一个可用于终端打印的命令是printf,例如:

printf命令接受引用文本或由空格分隔的参数,我们可以在printf中使用格式化字符串来指定字符串的宽度,左右对齐方式等。printf不会自动添加换行符,我们需要手动指定,例如:

可以得到如下格式化的输出:

1.1.3 工作原理
%s,%c,%d,%f都是格式替换符,他们定义了该如何打印后续参数。%-5s指明了一个格式为左对齐且宽度为5的字符串替换(-表示左对齐)。如果不指定-,则右对齐。宽度指定了保留给某个字符串的字符数量,以name为例,其保留宽度是10,因此任何name字段的内容都会被显示在10字符宽的保留区域内,如果内容不足10则以空格补充。
对于Mark字段,将其格式化为%-4.2f,其中.2指定保留两位小数,在每一行的格式字符串后都有一个换行符\n。
1.1.4 补充内容
1.在echo中转义换行符
echo会在输出文本的尾部追加一个换行符,可以使用-n来禁止追加换行符,在使用转义序列时需要使用echo -e “包含转义序列的字符串”这种形式:

2.打印彩色输出
脚本可以使用转义序列在终端中生成彩色文本,文本颜色是由对应的色彩码来描述的,其中包括:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37。
要打印彩色文本,可输入如下命令:

其中\e[1;31m是一个转义字符串,可以将颜色设为红色,\e[0m将颜色重新置回。只需要将31替换成想要的色彩码就可以了。
对于彩色背景,经常使用的颜色码是:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47。
设置彩色背景,可以输入如下命令:

1.2 使用变量与环境变量
1.2.1 预备知识
变量名由字母,数字,下划线组成,不包含空白字符。在脚本中常用大写字母命名环境变量,小写字母命名其他变量。
可以使用env或者printenv命令查看当前shell中定义的全部环境变量:

查看其他进程的环境变量,使用如下命令(pid是进程id):

1.2.2 实战演练
可以使用等号操作符为变量赋值:varName(变量名)=value(赋给变量的值)。注意:两边没有空格的等号是赋值操作符,有空格是等量关系测试。
在变量名之前加上美元符号($)就可以访问变量的内容

可以在printf,echo或其他命令的双引号中引用变量值:

输出如下

因为shell使用空白字符来分隔单词,所以我们需要加上一对花括号来告诉shell这里的变量名是fruit,而不是fruit(s)。
使用单引号时,变量不会被扩展,原样显示:

如果变量var已经定义过,使用双引号会显示该变量的值,如果没定义过则不显示:
1.2.3 补充内容
1.获得字符串的长度

2.识别当前所使用的shell


浙公网安备 33010602011771号