`
Shell概述
- Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。
Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。
`
一、Shell脚本入门
1.Linux提供的Shell解释器
/etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
bash和sh的关系↓
grep bash -rwxr-xr-x. 1 root root 941880 5月 11 2016 bash lrwxrwxrwx. 1 root root 4 5月 27 2017 sh -> bash
2.脚本格式
脚本以*#!/bin/bash*开头
是用来指定解析器的
例子说明
需求:创建一个Shell 脚本,输出 helloworld
$ touch helloworld.sh
$ vim helloworld.sh
helloworld.sh中内容如下:
#!/bin/bash echo "helloworld"
- 脚本的常用执行方式第一种:采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限) sh+脚本的相对路径
$ sh ./helloworld.sh
sh+脚本的绝对路径
$ sh /home/atguigu/shells/helloworld.sh
bash+脚本的相对路径
$ bash ./helloworld.sh
bash+脚本的绝对路径
$ bash /home/atguigu/shells/helloworld.sh
- 采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)
- 首先要赋予 helloworld.sh 脚本的+x 权限
- 执行脚本相对路径或绝对路径
$ chmod +x helloworld.sh
$ ./helloworld.sh
$ /home/atguigu/shells/helloworld.sh
注意:第一种执行方法,本质是 bash 解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。
二、系统预定义变量
1.常用系统变量
如下:
$HOME、$PWD、$SHELL、$USER 等
查看系统变量的值:
$ echo $HOME
显示当前Shell中所有变量:set
$ set
BASH=/bin/bash
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
2.自定义变量
1、基本语法
(1) 定义变量:变量名=变量值,注意,=号前后不能有空格
(2) 撤销变量:unset 变量名
(3) 声明静态变量:readonly 变量,注意:不能 unset
2、变量定义规则
(1) 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
(2) 等号两侧不能有空格
(3) 在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
(4) 变量的值如果有空格,需要使用双引号或单引号括起来。
代码如下(示例):
#定义变量A
$ A=1024
#撤销变量A
$ unset A
#声明静态的变量 B=2,不能撤销
$ readonly B=2
#在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算
$ C=1+2
#变量的值如果有空格,需要使用双引号或单引号括起来
$ D="I love banzhang"