一、Shell概述

Shell是一个命令行解释器,它接受应用程序/用户命令,然后调用操作系统内核。

Shell还是一个功能强大的编程语言,易编写、易调试、灵活性强。

二、Shell脚本入门

1.脚本格式

脚本以#!/bin/bash开头

2.第一个Shell脚本

(1)需求

创建一个Shell脚本,输出helloworld

(2)实操

touch helloworld.sh
vim helloworld.sh

在helloworld.sh中输入如下内容:

#!/bin/bash 
echo 'helloworld'

(3)执行方式

第一种:采用bash或sh+脚本的

sh+脚本的相对路径(不用赋予脚本+x权限)

sh helloworld.sh

sh+脚本的绝对路径

sh /home/depo/shell/helloworld.sh

bash+脚本的相对路径

bash hellworld.sh

bash+脚本的绝对路径

bash /home/depo/shell/helloworld.sh

第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)

首先赋予helloworld.sh脚本的+x权限

chmod 777 helloworld.sh

执行脚本


相对路径: ./helloworld.sh 绝对路径: /home/depo/shell/helloworld.sh


注意:第一种执行方式,本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。

3.第二个Shell脚本:多命令处理

#!/bin/bash

touch test.txt
echo "i love java" >> test.txt

三、Shell中的变量

1.系统变量

(1)常用系统变量


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


(2)实操

查看系统变量的值

[depo@dev shell]$ echo $HOME
/home/depo

2.自定义变量

(1)基本变量

定义变量: 变量=值

撤销变量: unset 变量

声明静态变量: readonly 变量 注意:不能unset

(2)变量定义规则

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

(3)实操

1.定义变量A

A=5
echo $A

2.给变量A重新赋值

A=8
echo $A

3.撤销变量A

unset A
echo $A

4.声明静态的变量B=2,不能unset

[depo@dev shell]$ readonly B=2
[depo@dev shell]$ echo $B
2
[depo@dev shell]$ unset B
-bash: unset: B: 无法反设定: 只读 variable
[depo@dev shell]$

5.在bash中,变量默认是字符串类型

[depo@dev shell]$ C=1+2
[depo@dev shell]$ echo C
C
[depo@dev shell]$

6.可把变量提升为全局环境变量,供其他Shell程序使用

将变量C提升为全局变量:

export C

修改helloworld.sh:

#!/bin/bash 


echo "helloworld" 
echo $C

运行:

[depo@dev shell]$ ./helloworld.sh 
helloworld
1+2

3.特殊变量:$n

(1)基本语法

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

(2)实操

touch parameter.sh
vim parameter.sh
#!/bin/bash

echo "$0 $1 $2 $3"


   


执行该脚本

[depo@dev shell]$ sh parameter.sh abc yfy nihao
parameter.sh abc yfy nihao

4.特殊变量:$

(1)基本语法

$#:获取所有输入参数个数,常用于循环

5.特殊变量:$*、$@

(1)基本语法

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

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

(2)实操

打印输入的所有参数

vim parameter.sh

#!/bin/bash

echo "$0 $1 $2 $3"
echo $#
echo $*
echo $@

执行:

[depo@dev shell]$ sh parameter.sh abc yfy nihao
parameter.sh abc yfy nihao
3
abc yfy nihao
abc yfy nihao

5.特殊变量:$?

(1)基本语法

$?:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行

(2)实操

判断helloworld.sh脚本是否正确执行

[depo@dev shell]$ ./helloworld.sh 
helloworld
1+2
[depo@dev shell]$ echo $?
0
[depo@dev shell]$

四、运算符

1.基本语法

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

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

2.实操

(1)计算3+2的值

[depo@dev shell]$ expr 2 + 3
5

(2)计算(2+3)x4的值

expr一步完成计算

expr `expr 2 + 3` \* 4

采用$[运算式]方式

S=$[ (2+4)*4 ]