shell脚本

发布时间 2023-06-09 17:02:47作者: 小王同学学编程

1. shell脚本入门

1.1  脚本格式

脚本以#!/bin/bash开头(指定解析器)

 

1.2 第一个shell脚本

(1)首先创建一个helloworld.sh文件

 (2)输入解析器和内容,并保存

(3)执行脚本,可以使用sh、bash、./(./是相对路径,是自己调用自己,会导致权限不够,需要修改权限,chmod修改权限)

 

1.3 第二个shell脚本:多命令处理

需求:在/home/script/目录下创建一个banzhang.txt,在banzhang.txt文件中增加“banzhang”

(1)创建batch.sh

(2)编写脚本,>>表示为追加

(3)执行,并查看

 

2. shell中的变量

2.1 系统变量

$HOME、$PWD、$SHELL、$USER等

更加方便调用。

 

2.2 自定义变量

2.2.1 基本语法

(1)定义变量:变量=值(等号两边没有空格

实例:

 

(2)撤销变量:unset 变量

实例:

 

(3)声明静态变量:readonly 变量(不能unset

 

2.2.2 变量定义规则

1. 变量名称可以由字母、数字、下划线组成,但是不能以数字开头,环境变量名建议大写

2. 等号两侧不能有空格。

3. 在bash中,变量默认类型都是字符串类型,无法直接进行数值计算。

4 . 如果变量的值有空格,需要使用双引号或单引号括起来。

5. 可把变量提升为全局环境变量,可供其他shell程序使用。通常用于java home,hadoop home等。

实例:

(1)定义一个c变量,在写入helloworld脚本

(2)执行脚本发现并没有c变量的值

 (3)使用export将c变量提升为全局变量,然后执行脚本,然后可以发现c变量的值

 

2.3 特殊变量

2.3.1 $n

$n(功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10})

  实例:创建一个脚本,diyi为第一参数,dier为第二参数,因为后续脚本里没写入新的参数,所以disan不显示;

 

2.3.2 $#

功能描述:获取所有输入参数个数,常用于循环;

  实例:获取输入三叔的个数

 

2.3.3 $*、$@

$*:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体;

$@:这个变量也代表命令行中所有的参数,$@把每个参数区别对待;

实例:

 

2.3.4 $?

最后一次执行命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量为非0(具体是那个数,又命令自己来决定),则证明上一个命令执行不正确。

实例:

 

3. 运算符

1. 基本语法

(1)$((运算符))或$[运算符]

(2)expr +,-,\*,/,%     加,减,乘,除,余

         注意:expr运算符间要有空格;

实例:

 

4. 条件判断

1. 基本语法

[ condition ]:注意condition前后要有空格;

 

2. 常用判断条件

实例1:判断1是否大于2,通过$?查看;判断3是否大于2,通过$?查看

 

实例2:判断helloworld.sh是否有写权限

 

3. 多条件判断(&&条件与,表示前一条命令执行成功时,才能执行后一条命令,||条件或,表示上一条命令执行失败时,才执行下一条命令)

 

5. 流程控制

5.1 if判断

语法:

注意:

(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格;

(2)if后要有空格;

 

实例:输入一个数字,如果是1,则输出one,如果是2,则输出two,如果是其他什么也不输出。

 

5.2 case判断

语法:

注意:

(1)case行尾必须为单词in,每一个模式匹配必须以右括号“)”结束;

(2)双分号“;;”表示命令序列结束,相当于java中的break;

(3)最后的“*)”表示默认模式,相当于java中的default;

 

实例:输入一个数字,如果是1输出one,如果是2输出2,如果是其他输出qita

 

5.3 for判断

语法:

 

实:1:1加到100

 

 

实例2:打印所有输入参数

 

5.4 while判断

语法:

 

实例:1加到100

 

6. read读取控制台输入