LINUX——shell编程

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

相关推荐
MXsoft6189 分钟前
**混合云统一监控实践:私有云+公有云的一体化运维方案**
运维·网络·数据库
2501_9127840812 分钟前
Taocarts深度解析:1688自动代采模块的Puppeteer自动化实战
运维·自动化
天南散修15 分钟前
MT7916驱动中802.11转换为802.3
linux·网络·驱动开发·wifi·802.11
MXsoft61815 分钟前
**断网续传与本地缓存:弱网环境下的监控数据保障方案**
运维·缓存·自动化
LT101579744427 分钟前
2026年UI自动化测试平台选型指南:全界面自动化覆盖方案
运维·ui·自动化
TechWayfarer36 分钟前
云服务器地域怎么选:用离线IP数据库识别用户来源并优化部署
服务器·数据库·python·tcp/ip·数据分析
CriticalThinking1 小时前
在xshell中使用ssh隧道访问远程服务
linux·网络·ssh
爱装代码的小瓶子1 小时前
安工大题目分类(含解析和翻译)
linux·网络·c
天青色等烟雨..1 小时前
智慧农林核心遥感技术99个案例实践
运维·人工智能·spring boot·后端·自动化
数智化精益手记局1 小时前
拆解复杂项目管理流程:用项目管理流程解决跨部门协作低效难题
大数据·运维·数据库·人工智能·产品运营