Shell脚本
概念:
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Install—Nginx
-
先下载vim
yum install vim -y
-
使用vim命令创建并编辑nginx_install.sh文件
vim nginx_install.sh
-
文件中编辑的内容为:
# 下载Nginx所需的gcc yum -y install wget gcc pcre-devel zlib-devel # 下载Nginx wget http://nginx.org/download/nginx-1.20.1.tar.gz # 解压nginx tar xf nginx-1.20.1.tar.gz cd nginx-1.20.1 # 初始化 ./configure --prefix=/usr/local/nginx # 编译 make # 安装 make install
-
给予文件的运行权限
chmod 700 nginx_install.sh
-
运行脚本文件
./nginx_install.sh
流程
#解释环境
#!/usr/bin/bash
#注释说明
#Author: Ba Shuming 作者
#Created Time: 2021/08/29 16:00 日期
#Script Description: first shell study script 描述
#执行代码
………………………………………………………………………………………………………………………………………………………………………………………………
运行方式
-
给予执行权限再执行
-
chmod 700 文件
-
./文件
-
-
解释器直接运行(不需要权限)
-
bash 文件 或者 sh 文件 至于sh和bash采用哪个,最好解释环境用的啥就用啥 主要是linux下有很多shell解释器 /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash 其实/bin就是连接的/usr/bin
-
符号
~ 回到/root目录
- 回到上一级目录 类似于 ..
! 执行历史命令
!! 输出上一次执行的命令是啥,并执行
$ 获取某个变量的值
+-*/ % 这个真的略
&: 后台执行
*: 星号是shell中的通配符 匹配所有
?: 问号是shell中的通配符 匹配除回车以外的一个字符
;: 分号可以在shell中一行执行多个命令,命令之间用分号分割
|: 管道符 上一个命令的输出作为下一个命令的输入 cat filename | grep "abc"
\: 转义字符 expr 5 \* 2 #注意*出现应该转义,否则认为是通配符
``: 反引号 命令中执行命令 echo "today is `date +%F`" echo "3*3=`expr 3 \* 3`"
' ': 单引号,脚本中字符串要用单引号引起来,但是不同于双引号的是,单引号不解释变量
" ": 双引号,脚本中出现的字符串可以用双引号引起来
举例子说明单引号和双引号的区别
echo '3*3=`expr 3 \* 3`' 输出3*3=`expr 3 \* 3`
echo "3*3=`expr 3 \* 3`" 输出3*3=9
由此证明单引号不解释变量
双小圆括号运算,在shell中(( ))也可以用来做数学运算
echo $(( 100+3))
103
echo $(( 100-3))
97
echo $(( 100%3))
1
echo $(( 100*3))
300
echo $(( 100/3))
33
echo $(( 100**3)) #开方运算
1000000
重定向
echo 内容 > 文件 会将文件中原本的内容设置为当前内容,如果文件不存在则先创建文件
echo 内容 >> 文件 会像文件中追加内容到最后一行。
wc < print.sh 输出2 3 30,代表2行3个单词,30个字节
<< 重定向追加输出 fdisk /dev/sdb << 这里我确实没听明白,原因是Linux有些东西还是不会,导致Shell,后期补充,视频如下:
https://www.bilibili.com/video/BV1j541157Sr?p=5&spm_id_from=pageDriver
注意事项
- 文件名称要有意义,个人建议多个单词之间用下划线隔开
- 虽然Linux中没有扩展名的概念,但依然建议以 .sh 结尾
- 开头必须指定脚本运行的环境,比如:#!/usr/bin/bash
- shell中注释采用#,但**#!**组合特殊,用于指定脚本运行环境
小知识点
- chmod 700 nginx_install.sh 给予一个脚本文件的运行权限
- chmod 644 print.sh 取消一个文件的执行权限
- chmod 777 /var/ftp 干这么设置匿名用户就废了 不要随便搞TM的777
- Permission denied 没有权限
- date +%F 获取当前的日期
- echo $? 判断上一条命令是否执行成功,如果是0则成功,否则失败
- bc命令专门用于计算,但是需要提前安装:yum install bc -y
- bc页面中 scale=2 表示接下来的计算结果保留小数点后两位
- exit 0 代表正常退出,非0代表不正常退出
- exit 10 执行后,采用 echo $? 返回10,范围是0~255,如果超过极值,则echo $? 返回的结果按着极值算