一、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 ]