一起来了解Shell脚本
目录
- 一、Shell脚本概述
- 1.1.Shell脚本的概念
- 1.2.Shell脚本应用场景
- 1.3.Shell的作用——命令解释器,“翻译官”
- 1.4.用户的登录Shell
- 二、Shell脚本基础
- 2.1.Shell的作用
- 2.2.什么是shell脚本?及构成
- 2.3.脚本执行逻辑及执行方式
- 三、使用Shell脚本搭建yum本地仓库
- 3. 1.在yum仓库里进行操作
- 3.2.实施效果
- 3.3.设置ping的限定次数
- 四、重定向与管道操作
- 4.1交互式硬件设备
- 4.2从一个文件传输到另一个文件,并计算结果。
- 4.3转移文件
- 五、变量
- 5.1变量基础
- 5.2自定义变量
一、Shell脚本概述
1.1.Shell脚本的概念
- 将要执行的命令按顺序保存到一个文本文件
- 给该文件可执行权限
- 可结合各种Shell控制语句以完成更复杂的操作
1.2.Shell脚本应用场景
- 重复性操作
- 交互性任务
- 批量事务处理
- 服务运行状态监控
- 定时任务执行
- …
1.3.Shell的作用——命令解释器,“翻译官”
- 介于系统内核与用户之间,负责解释命令行
1.4.用户的登录Shell
登录后默认使用的Shell程序,一般为 /bin/bash
不同Shell的内部指令、运行环境等会有所区别
[root@localhost data]# cd
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
二、Shell脚本基础
2.1.Shell的作用
- linux系统中的Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
- 常见的Shell解释器程序有很多种,使用不同的Shell时,其内部指令、命令行提示符等方面会存在一些区别。
- 通过 /etc/shells 文件可以了解当前系统所支持的Shell脚本种类。
查看本机的shell信息
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
2.2.什么是shell脚本?及构成
- 就是使用按顺序将命令——列出,最后自动执行
- 执行需要权限,也可以调用
- 脚本其实不复杂,通用脚本环境改变后依旧可以使用的脚本构成
可执行语句:比如echo命令用于输出“ ”之间的字符串
[root@localhost ~]# vim frist.sh
[root@localhost ~]# cat frist.sh
echo "hello world"
[root@localhost ~]# ./frist.sh
-bash: ./frist.sh: 权限不够
[root@localhost ~]# chmod +x ./frist.sh
[root@localhost ~]# ./frist.sh
hello world
2.3.脚本执行逻辑及执行方式
- 脚本执行逻辑:
1.顺序执行:程序按从上到下顺序执行
2.选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行
3.循环执行:程序执行过程中需要重复执行多次某段语句
执行方式:
1.指定路径去执行文件(需要有执行权限)
1.[root@localhost ~]# chmod +x /root/host.sh
2.指定相对路径 ./host.sh
3.指定绝对路径 /root/host.sh
2.指定解释去去执行(不需要权限)
1. [root@localhost ~]# bash host.sh 192.168.157.1
三、使用Shell脚本搭建yum本地仓库
3. 1.在yum仓库里进行操作
[root@localhost ~]# vim yum.shcd /etc/yum.repos.d
mkdir aa
mv *.repo aa
echo "[qwe]
name=qwe
baseurl=file:///mnt
gpgcheck=0
enabled=1" >bb.repo
mount /dev/sr0 /mnt
yum clean all
yum install tree -y[root@localhost ~]# ./yum.sh
3.2.实施效果
[root@localhost ~]# vim yum.sh
[root@localhost ~]# cat yum.sh
cd /etc/yum.repos.d
mkdir aa
mv *.repo aa
echo "[qwe]
name=qwe
baseurl=file:///mnt
gpgcheck=0
enabled=1" >bb.repo
mount /dev/sr0 /mnt
yum clean all
yum install tree -y
[root@localhost ~]# ./yum.sh
-bash: ./yum.sh: 权限不够
[root@localhost ~]# chmod +x ./yum.sh
[root@localhost ~]# ./yum.sh
mount: /dev/sr0 写保护,将以只读方式挂载
已加载插件:fastestmirror, langpacks
正在清理软件源: qwe
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
已加载插件:fastestmirror, langpacks
qwe | 3.6 kB 00:00
(1/2): qwe/group_gz | 156 kB 00:00
(2/2): qwe/primary_db | 3.1 MB 00:00
Determining fastest mirrors
正在解决依赖关系
--> 正在检查事务
---> 软件包 tree.x86_64.0.1.6.0-10.el7 将被 安装
--> 解决依赖关系完成依赖关系解决=========================================================================Package 架构 版本 源 大小
=========================================================================
正在安装:tree x86_64 1.6.0-10.el7 qwe 46 k事务概要
=========================================================================
安装 1 软件包总下载量:46 k
安装大小:87 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在安装 : tree-1.6.0-10.el7.x86_64 1/1 验证中 : tree-1.6.0-10.el7.x86_64 1/1 已安装:tree.x86_64 0:1.6.0-10.el7 完毕!
3.3.设置ping的限定次数
[root@localhost ~]# ping -c 6 192.168.157.2
PING 192.168.157.2 (192.168.157.2) 56(84) bytes of data.
64 bytes from 192.168.157.2: icmp_seq=1 ttl=128 time=0.229 ms
64 bytes from 192.168.157.2: icmp_seq=2 ttl=128 time=0.290 ms
64 bytes from 192.168.157.2: icmp_seq=3 ttl=128 time=0.199 ms
64 bytes from 192.168.157.2: icmp_seq=4 ttl=128 time=0.624 ms
64 bytes from 192.168.157.2: icmp_seq=5 ttl=128 time=0.295 ms
64 bytes from 192.168.157.2: icmp_seq=6 ttl=128 time=0.176 ms--- 192.168.157.2 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5001ms
rtt min/avg/max/mdev = 0.176/0.302/0.624/0.150 ms
四、重定向与管道操作
4.1交互式硬件设备
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息
4.2从一个文件传输到另一个文件,并计算结果。
[root@localhost ~]# echo 1 >cat.txt
[root@localhost ~]# echo 1 >>cat.txt
[root@localhost ~]# seq -s+ 100
1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18
+19+20+21+22+23+24+25+26+27+28+29+30+31+32
+33+34+35+36+37+38+39+40+41+42+43+44+45+
46+47+48+49+50+51+52+53+54+55+56+57+58+
59+60+61+62+63+64+65+66+67+68+69+70+71+
72+73+74+75+76+77+78+79+80+81+82+83+84
+85+86+87+88+89+90+91+92+93+94
+95+96+97+98+99+100
[root@localhost ~]# seq -s+ 100 > shuzi.txt
[root@localhost ~]# bc < shuzi.txt
5050
4.3转移文件
五、变量
- 保存将来会变化的数据,即使数据变化,直接调用变量即可,各种Shell环境中都使用到了“变量”的概念。
- Shell变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应变化。
- 通过使用变量,Shell程序能够提供更加灵活的功能,适应性更强。
5.1变量基础
常见Shell变量的类型包括:
1.自定义变量:由用户自己定义,修改和使用
2.环境变量:由系统维护,用于设置工作环境
3.只读变量:只可以读取不可以更改
4.位置变量:通过命令行给脚本传输参数
5.预定义变量:Bash中内置的一类变量,不能知己修改
赋值并将赋予的值展示出来
[root@localhost data]# class=15
[root@localhost data]# year=2021.10.20
[root@localhost data]# class=ky15
[root@localhost data]# echo $class:$year
ky15:2021.10.20
[root@localhost data]#
提取IP地址
[root@localhost data]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.157.101 netmask 255.255.255.0 broadcast 192.168.157.255inet6 fe80::771:e554:a619:3bf2 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:1b:e2:c6 txqueuelen 1000 (Ethernet)RX packets 8414 bytes 666940 (651.3 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 5224 bytes 629519 (614.7 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@localhost data]# ifconfig ens33|awk /netmask/'{print $2}'
192.168.157.101
变量转换
[root@localhost data]# ip1=$(ifconfig ens33|awk /netmask/'{print $2}')
[root@localhost data]# echo $ip1
192.168.157.101
5.2自定义变量
5.2.1赋值时使用引号
双引号:允许通过$符号引用其他变量值
单引号:禁止引用其他变量值, $视为普通字符
反撇号:命令替换,提取命令执行后的输出结果
{}可以分隔变量值
5.2.2 从键盘输入内容为变量赋值
[root@localhost data]# read -p "请输入一个数字:" num
请输入一个数字:888
[root@localhost data]# echo $num
888
5.2.3Shel脚本录信息
[root@localhost data]# vim 1.sh
[root@localhost data]# sh 1.sh
请输入你的信息ky15
ky15
[root@localhost data]# cat 1.sh
#!/bin/bash
echo -n "请输入你的信息"
read info
echo $info
赋值先后的区别
一起来了解Shell脚本相关推荐
- jar包部署shell脚本编写,在服务器上部署jar包,在Linux服务器上部署服务,设置编码格式,设置内存管理
准备步骤: 1.安装java环境,知道java安装目录 2.将jar包拖放或发送至服务器中(目录自定义) 一.编写shell脚本,将以下代码放在shell脚本中,将shell脚本放在jar包同级目录下 ...
- 快速给shell脚本加上使用提示
我们只需通过在shell脚本前面加上如下的代码即可: #!/bin/bash ### ### my-script - does one thing well ### ### Usage: ### my ...
- Ubuntu系统执行shell 脚本的方法
使用前了解 Shell: Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁 Shell: Shell 脚本(shell script),是一种为 shell 编写的脚本程序. 下面 ...
- Windows 系统执行Shell 脚本的方法
使用前了解 Shell: Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁 Shell: Shell 脚本(shell script),是一种为 shell 编写的脚本程序. 下面 ...
- shell监控java接口服务_Linux系统下Java通过shell脚本监控重启服务
简介 最近运维人员提出需求,增加一个运维页面, 查询当前的业务进程信息包括:进程名称.启动命令.启动时间.运行时间等,可以通过页面点击重启按钮,可以重启后端的一系列系统进程. 思路 java程序获取l ...
- linux 脚本 alias,在shell脚本中使用alias别名
本文最后更新于2015年7月12日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢! 缘由: 经常用Linux进行操作的同学一般都会有各种各样的技巧来提升工作效率,而添加/改写shell ...
- linux shell脚本攻略_(python)Linux下shell脚本监控Tomcat的状态并实现自动启动步骤...
今天为大家带来的内容是:(python)Linux下shell脚本监控Tomcat的状态并实现自动启动步骤 本文内容主要介绍了Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤,文章 ...
- linux重启sh脚本,Linux 之shell脚本系列之服务启动/关闭/重启/状态
一 问题 自己开发的程序,如何用shell 脚本实现 启动,关闭,重启,查看状态? 二 方案 myshell.sh #!/bin/sh SERVICE="fm_tuoguan_shell&q ...
- linux按文件名排序ls,linux – 如何使用shell脚本按名称对文件进行排序
我想用 Shell脚本按日期排序所有文件. 例如,在/ Users / KanZ / Desktop / Project / Test /中有文件M1.h,A2.h和F4.h. 每个文件都有不同的时间 ...
- linux 脚本 符号,Shell脚本 入门 —— 符号篇
shell变量 shell变量不需要进行任何声明,直接定义即可,因为shell变量的值实际上都是字符串(对于没有定义的变量默认是一个空串).定义的时候shell变量由大写字母加下划线组成,并且定义的时 ...
最新文章
- 清华学长手把手带你做UI自动化测试
- MFC接收命令行参数的三种方法
- Python图像处理库:PIL中Image,ImageDraw等基本模块介绍
- 马来西亚国立大学的计算机,要拿到马来西亚国立大学的 offer难吗?
- 信息系统项目管理师论文指导(2/3)
- ctype.h(cctype) 头文件函数大全
- 新窗口打开html页面,网页是选择新窗口打开还是原窗口打开?
- OCR 工具tesseract初体验
- hdu 6397 Character Encoding
- Python 编写规范
- 分位数回归-Quantile regression
- 一个软件系统的兼容性测试,在兼容性测试中,如何判断软件的兼容性?
- c语言程序设计 自考,自考“C语言程序设计”模拟试题九
- 架构师之路读书会 | 15分钟一本,让我为你精读100本好书,快来加入吧!
- 为什么中国难以诞生像SAP、甲骨文一样的企业级服务公司?
- 天盾linux数据恢复,天盾Mac数据恢复软件
- 相机视频展示开源平台ISpy
- 《闲扯Redis九》Redis五种数据类型之Set型
- matlab通过数据进行曲线拟合 导出公式
- 身份证阅读器(新中新)写入受保护内存问题,已解决
热门文章
- Grunt 单独对css压缩并生成min.css文件
- 【云原生Docker系列项目实战第一篇】dockerfile+lnmp+workpress(星星温柔泛滥,人间至善)
- 机器学习之SVM介绍
- 《孤独六讲》-蒋勋 摘录1
- 第十五届全国青少年信息学奥林匹克联赛初赛试题
- 漫画 | 为什么中国没有搞出浏览器引擎?
- 做好站内站外优化,网站SEO优化效果才能一步到位!
- 原型设计展示【与莫多的初次合作】
- layer.tips换行问题(解决layui tips连续英文和数字不换行问题)
- matlab 毕业论文题目,与matlab相关主题论文_基于matlab的论文题目_论文翻译器