Shell 简介
Shell 是一个 C 语言编写的脚本语言,它是用户与 Linux 的桥梁,用户输入命令交给 Shell 处理, Shell 将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户。 下面是流程示意图:
第一个 Shell 脚本
用 vi 打开 test.sh,编写:
vi test.sh
#!/bin/bash
echo "Hello world!"
方法 1:直接用 bash 解释器执行
bash test.sh Hello world!
方法 2:添加可执行权限
ll test.sh
-rw-r--r--. 1 root root 32 Aug 18 01:07 test.sh
chmod +x test.sh
./test.sh
-bash: ./test.sh: Permission denied
chmod +x test.sh
./test.sh
./在当前目录
Hello world!
方法 3:source 命令执行,以当前默认 Shell 解释器执行
source test.sh
Hello world!
Shell 变量
系统变量
普通变量与临时环境变量
普通变量定义:VAR=value
临时环境变量定义:export VAR=value
变量引用:$VAR
特殊变量
变量引用
条件表达式
整数比较符
字符串比较符
文件测试
布尔运算符
逻辑判断符
整数运算
Shell 括号用途总结
实验
前提准备
shell脚本的书写规范
#编辑.sh文件时自动生成关于脚本文件说明的注释
[root@localhost ~]# cat /root/.vimrc
autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()"
func SetTitle()
if expand("%:e") == 'sh'
call setline(1,"#!/bin/bash")
call setline(2,"#########################")
call setline(3,"#File name:".expand("%")) #文件名字
call setline(4,"#Version:v1.0") #shell版本
call setline(5,"#Email:admin@test.com") #作者Email
call setline(6,"#Created time:".strftime("%F %T")) #创建时间
call setline(7,"#Description:") #当前文件备注
call setline(8,"#########################")
call setline(9,"")
endif
endfunc
1、写一个脚本,给脚本传递两个参数,显示两者之和和两者之积
第一步 创建shell文件的存储目录
[root@localhost /]# mkdir scripts
第二步 创建num.sh文件,编写文件
[root@localhost scripts]# vim num.sh
#!/bin/bash #编译脚本配置
##############################################################
File Name: num.sh #文件名字
Version: V1.0 #编译版本
Author: Gao_XY #作者名字
Email: Gao_XY@163.com #作者邮箱
Organization:https://blog.csdn.net/ens33?type=blog #作者网站
Created Time : 2024-12-12 11:50:27 #创建文件时间
Description: "给脚本传递两个参数,显示两者之和与两者之积" #备注
##############################################################
read -p "请输入两个数字:" A B #read -p 通过 read 读入持续等待输人
echo "他们的和为:" \[A+B\] #[]执行内部的变量,并输出
echo "他们的积为:" $[A*B]
第三步 执行文件
sh num.sh
2、写一个脚本,判断nginx是否安装,没有则安装。
第一步 创建app.sh 文件
[root@localhost scripts]# vim app.sh
第二步 编译脚本文件
#!/bin/bash
##############################################################
File Name: app.sh
Version: V1.0
Author: Gao_XY
Email: Gao_XY@163.com
Organization:https://blog.csdn.net/ens33?type=blog
Created Time : 2024-12-12 14:58:55
Description: "判断nginx是否安装,没有则安装"
##############################################################
[ -f nginx ] && echo "nginx is exists" || yum -y install nginx
[ -f *** ] 判断该文件是否存在 若存在则输出 *** ,否则 下载该文件
或者 rpm -q nginx &>/dev/null && echo "nginx is exists" || yum -y install nginx
第三步 执行脚本文件
[root@localhost scripts]# sh app.sh
3、写一个脚本,判断是否是root用户,如果不是输出"Please use the root user to execute the script"
第一步 创建user.sh脚本
[root@localhost scripts]# vim user.sh
第二步 编译文件
#!/bin/bash
##############################################################
File Name: user.sh
Version: V1.0
Author: Gao_XY
Email: Gao_XY@163.com
Organization:https://blog.csdn.net/ens33?type=blog
Created Time : 2024-12-12 14:47:37
Description:
##############################################################
[ $UID -eq 0 ] && echo "this is root " || echo "Please use the root user to execute the script"
$UID=0 则为root用户
#[ $UID -eq 0 ] 判断UID是否为0 若是则输出 **** ,否则输出 *****
第三步 执行文件
[root@localhost scripts]# sh user.sh
第四步 编译环境
[root@localhost scripts]# vim /etc/profile #编辑该配置文件
在末尾添加该配置
export PATH=$PATH:/scripts/user.sh #使当前服务器下所有用户执行该目录下的变量
第五步测试
root用户测试
其他用户测试
[root@localhost scripts]# su gxy