Shell脚本零基础入门1

简介: Shell脚本零基础入门

1.shell脚本入门

1.1.shell的简介

shell是一种脚本语言,又是一种命令语言,可以通俗一点讲,shell脚本就是一些列命令的集合,可以在Unix、linux上直接使用,并且直接调用大量系统内部的功能来解释执行程序把一些重复性的工作交给shell做,来实现自动化运维。shell虽然没有java、c++、python等强大,但也支持了基本的编程元素,例如if、for、while等,还有变量数组、字符串、注释、加减乘除逻辑运算等。

1.2.shell的应用场景

shell主要开发一些实用的、自动化的小工具,而不是用来卡法复杂的业务逻辑的
(1)监控linux环境变量的使用情况
(2)数据的处理,日志的切割、分析、统计等
(3)与数据库的交互,对数据库进行增删改查
(4)监控进程,自动化启停服务进程
(5)完成一些重复性的工作,创建100哥新用户或者配置某个文件等等

1.3.shell常见的解释器

解释器:一种命令解释器,主要作用是对命令进行运行和解释,将需要执行的操作传递给操作系统内核并执行
四种解释器:
#!/bin/bash(默认)
#!/bin/ksh
#!/bin/bsh
#!/bin/sh
  • 注意:shell脚本运行不一定需要解释器,有些脚本没有解释器也可以运行

1.4.shell脚本文件权限与脚本执行

  • 文件创建默认是没有执行权限的,所以要给加上权限:chmod u+x sh结尾的文件。
  • 执行shell脚本的方法:
方法一:sh 文件名
方法二:bash 文件名
方法三:./文件名
方法四:source 文件名 

2.shell的变量以及常见符号

2.1.常见变量

  • =:等于号赋值,a=15
  • $a:调取a变量的值
  • ${a}:调取a变量的值,当{a}后面有其他字符时,不会影响a的获取
  • $?:判断上一条命令执行的结果,成功为0,失败为1
  • $1-$9:返回对应的第几个参数
  • $*:返回所有的参数的值是什么
  • $#:返回参数的个数

(1)= 等号的作用

a=15;b=20;echo "$a,$b"


fa27ae830452413db3235fbe8b9ecd0a.jpg

(2)a 和 a和a和{a}的区别

echo "$abbbbb";echo "${a}bbbbb"

da3561c3660c4cc897cc5733c2b4451d.jpg

(3)$?显示上一条命令执行的结果

echo "$?"


a6bea28092944c0fa9e195e21d0f0729.jpg

(4)编写脚本,验证∗ , *,∗,#.$0-$9的用途

#!/bin/bash
#测试$*,$#,$0-$9的作用
#by lixiang 2021年8月
echo "当前执行的脚本为:$0"
echo "第一个参数:$1"
echo ”第二个参数:$2"
echo "一共输入多少个参数:$#"
echo ”所有的参数为:$*"

a3bea4d487e0492fb4a22853395afbab.jpg

2.2.常见的符号

>       #输出重定向(覆盖)
>>        #输出重定向(追加)
;       #执行多条命令
|       #管道符
&&        #前一条命令执行成功才会执行后面
||        #前一条命令执行失败才会执行后面
""        #输出变量识别通配符
''        #输出本身
``        #优先执行,放在``中会识别成命令执行
2>/dev/null   #错误输出到无底洞

2.3.计算运算符及linux中的计算器

整数形式

(1)整数相加

  • 常量
方式一:expr 13 + 12
方式二:echo $[13 + 12]
方式三:echo $((13 + 12))

fa6a8edc26a6419d9eea47a74c035e8b.jpg

  • 变量
方式一:expr $a + $b
方式二:echo $[a + b]
方式三:echo $((a + b))


650c8bf6226e473ea8e100945e6a19c4.jpg

(2)整数相减

  • 常量
方式一:expr 13 - 12
方式二:echo $[13 - 12]
方式三:echo $((13 - 12))


c355a4e5e4c14f9899ad38bea5bb559d.jpg

  • 变量
方式一:expr $a - $b
方式二:echo $[a - b]
方式三:echo $((a - b))

1dfdd4b68ba74bdf8df4dd459e73bac6.jpg

(3)整数相乘(注意:expr 执行 *为通配符,需要加 \ *进行转义)

  • 常量
方式一:expr 13 \* 12
方式二:echo $[13 * 12]
方式三:echo $((13 * 12))


e380c0203d6745a78c91add069e5926e.jpg

  • 变量
方式一:expr $a \* $b
方式二:echo $[a * b]
方式三:echo $((a * b))

7bb81f7e0e6f4b099ae5f94c3c80407e.jpg

(4)整数相除

  • 常量
方式一:expr 13 / 12
方式二:echo $[13 / 12]
方式三:echo $((13 / 12))


bec6405786494eba8dc010b01a94fecf.jpg

  • 变量
方式一:expr $a / $b
方式二:echo $[a / b]
方式三:echo $((a / b))


8757c6c8d06e44ad9febc7157467f3ab.jpg

(5)整数求余

  • 常量
方式一:expr 13 % 12
方式二:echo $[13 % 12]
方式三:echo $((13 % 12))


b3c0717b8b294a959d0539a4759eb4eb.jpg

  • 变量
方式一:expr $a % $b
方式二:echo $[a % b]
方式三:echo $((a % b))


3177aff2ebfb4693ba320251d3423001.jpg

小数形式

  • 借助bc计算器,保留多少为小数可以通过sacle,但是scale只对除法,取余数,乘法有效,对加减无效

(1)1.2+1.3 保留两位小数

echo "scale=2;(1.2 + 1.2)/1" | bc


e2c668431d7b45999089a1d7a940bff6.jpg

2.4.常见的条件判断

  • 语法:[ 判断表达式 ]

文件夹或者路径

-e:目标是否存在(exist)
-d:是否为目录(directory)
-f:是否为文件(file)

(1)判断是否存在lixiang.sh文件

[ -e lixiang.sh ] && echo "存在"

2ccea5112d0f4a708695e02b5e3a4714.jpg

(2)判断lixiang.sh是不是一个文件

[ -f lixiang.sh ] && echo "YES"


08eb7ecb8eb54e879701fa8c6a8b85fc.jpg

(3)判断lixiang.sh谁不是一个目录

[ -d lixiang.sh ] || echo "NO"

b46a816d01854d3090236030251b542f.jpg


相关文章
|
3月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
120 1
|
2月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
72 2
6种方法打造出色的Shell脚本
|
2月前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
71 1
|
2月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
65 2
|
3月前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
67 6
|
2月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
3月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
88 12
|
3月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
89 2
|
4月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
4月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
812 2