Shell编程

一、Hello Linux

创建shell脚本,命名test,格式统一为.sh

touch hello.sh 

编辑脚本:

vim hello.sh 

按一下字母i键,即可编辑 

Shell编程_第1张图片

编辑好内容后,按一下ESC键,再输入:wq! (表示强制保存退出的意思),回车即可。

二、运行shell脚本

1、直接使用bash 命令运行

bash hello.sh

效果如下:

2、赋予权限直接运行

因为没有执行权限首先进行授权

chmod -x hello.sh 

执行hello.sh文件

相对路径:./hello.sh

当前目录:. hello.sh

绝对路径:/root/shell/hello.sh

效果演示

Shell编程_第2张图片

三、Shell变量

1、变量类型

  • 普通变量:变量名变量值,注意,=号前后不能有空格
  • 删除变量: unset 变量名
  • 只读变量:readonly 变量,注意:不能unsete

2、 变量定义规则

  • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
  • 等号两侧不能有空格“
  • 在bash 中,变量默认类型都是字符串类型,无法直接进行数值运算
  • 变量的值如果有空格,需要使用双引号或单引号括起来。

3、 普通变量

变量就很简单,比如我我要给变量value赋值为“"你好呀,Linux"

value="你好呀,Linux"

使用打印变量呢?

echo $value 

你可以在这里把echo理解为python的print,c语言的printf之类。

现在我们还是新建一个sh来进行测试

touch hello.sh

编辑文件: 

vim hello.sh 

编辑内容如下: 

Shell编程_第3张图片

运行结果如下: 

4、只读变量 

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变,举个例子:

不添加readonly的编辑内容

Shell编程_第4张图片

运行结果:

添加readonly的编辑内容

Shell编程_第5张图片编辑结果:

Shell编程_第6张图片

执行会报错

实际上这样的变量,我们一般也不怎么用,个人认为了解一下就是

5、删除变量

使用unset命令来删除一个已经声明的变量

编辑内容如下:

Shell编程_第7张图片

运行结果:

value实例是没有输出的

6、特殊变量

6.1、$n

  • $0:当前脚本的文件名
  • $1 ~ $9:第1个到第9个参数
  • 10 {N}:第10个到第N个参数

编辑内容:

Shell编程_第8张图片

如果不赋值,结果输出 

赋值后,结果输出

  

6.2、$#

获取所有输入参数个数 ,常用于循环,判断参数个数是否正确

Shell编程_第9张图片

不输入参数,运行结果:

输入参数,运行结果:

6.3、$*,$@

$@表示所有参数的列表,每个参数都是独立的,可以通过{n} 来获取。例如,1表示第1个参数,{2} 表示第2个参数,以此类推1。

$∗表示所有参数的列表,每个参数都是独立的,可以通过{n} 来获取。例如,1表示第1个参数,{2} 表示第2个参数,以此类推。

Shell编程_第10张图片

 不加参数运行结果:

Shell编程_第11张图片

添加参数运行结果:

Shell编程_第12张图片

6.4、$? 

$?:上一个命令的退出状态,或函数的返回值。

我们使用echo命令打印了一个字符串,然后使用? 来获取上一个命令的退出状态,即 0。因为 echo 命令执行成功了。

四、字符串

1、双引号和单引号特点

单引号特点:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

双引号特点: 

  • 双引号里可以有变量 - 双引号里可以出现转义字符 

2、获取字符串长度

加上echo ${#c}即可:

Shell编程_第13张图片

运行结果:

3、 字符串提取

编辑内容:获取a变量第1到3个字符串

Shell编程_第14张图片

运行结果:

五、运算符

1、算数运算符

Shell编程_第15张图片

运算符有两种格式分别为expr和$[]格式

1.1、 expr格式

Shell编程_第16张图片

运行结果:

Shell编程_第17张图片  

1.2、$[]格式

Shell编程_第18张图片

运行结果:

Shell编程_第19张图片 

2、关系运算符

下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:

Shell编程_第20张图片注:关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

 注意格式:[ $a = $b ],和左右字符必须有空格进行间隔 

Shell编程_第21张图片

运行结果:

Shell编程_第22张图片 

3、逻辑运算符

下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:

Shell编程_第23张图片

或运算:一个为真即为真,全部为假才是假
与运算:一个为假即为假,全部为真才是真

4. 字符串运算符

下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:

Shell编程_第24张图片

5、文件测试运算符(重点)

文件测试运算符用于检测 Unix/Linux 文件的各种属性。

Shell编程_第25张图片

注:权限几个判断,如果只有一个部分符合,则认为是有权限的。 

你可能感兴趣的:(linux,运维,服务器)