Linux:shell脚本笔记

news/2024/9/21 14:31:56 标签: linux, 笔记, 运维

介绍

shell是直接基于操作系统的一门脚本语言,是用C语言编写的一个工具。
shell在工作中的作用:
1.批量的运行Linux命令
2.可以去运行大数据平台的工具以及数据库的脚本,实现脚本的动态传参

编写shell脚本

步骤一

使用vim + 文件名来新建一个shell脚本文件(…sh)

步骤二

在新文件的第一行要加上文件运行的命令来源:
#!/bin/sh

#!/bin/bash

步骤三

运行脚本 有三种基本方法

方法说明
sh 文件名
bash 文件名
文件路径前提是需要给文件赋予x的执行权限

语法基础操作

变量定义

1.shell脚本默认所有变量都是字符串,定义方法同python,变量值里有空格必须加引号,否则不用加
2.在定义变量的时候,不能随便添加空格,整个shell脚本对于空格的使用都是非常严格的
3.在读取变量的时候,要使用${变量名} 或者$变量名 来对变量进行读取和引用。

输出语句

echo 要输出的内容
可选参数:-e:字符串里面的 \ 会被识别为转义字符
\n 换行符 \t 制表符 \c 连接符

输入语句

read -p “提示语句” 变量名字

给句子添加注释

在shell中如果多行注释,那么可能会因为一些符号导致注释出错或者失效,所以在shell中我们通常都是使用单行注释
在行首添加 # 即可

数据类型和基本操作方法

字符串

单引号和双引号的区别:单引号无法识别与解析字符串中的变量

基本操作方法

方法说明
${#变量名}返回字符串长度
${变量名:start:len}截取字符串
${变量名/old/new}只替换匹配的第一个数据
${变量名//old/new}替换所有数据

数字

整数运算

格式说明
$[ ]echo $[$n1-$n2]:变量前需要加$用于识别
$()echo $(($n1+$n2))
expr属于Linux的命令,嵌套时注意加上反引号,例:echo expr $n1 + $n2
let使用let语句实现数字计算,例:let c=n1+n2 echo $c;let语句不能直接用echo输出;特别的乘法符号前要加上转义符

小数运算

加法和减法
“变量+变量”|bc
乘法和除法
需要定义精度
“scale=小数精度;变量;+变量”|bc 这是个通用格式

数组

数组是很多不同的数据的一个集合体,中间使用空格来隔开数据
例: t=(100,22,3.4,hello) 默认都是字符串
数组的读取

${数组名}只会读取数组的第一个元素
${数组名[*]}读取数组的所有数据

注:数字的长度查询和元素内容的截取,和字符串的语法相同。
–在数组中查询指定序号的数据
${数组名[序号]}
–替换数据
数组名[seq]=value
–新增数据
数组名[数组长度]=value

逻辑部分

判断分支

if [ 条件判断 ]
  then;
    执行语句
  elif [条件判断]
  then;
    执行语句
  else
    执行语句
fi
第二种形式
f test 条件判断
  then
    执行语句
  elif test 条件判断
  then
        执行语句
  else
     执行语句
fi
数字的判断

逻辑符号
大于-gt
小于-lt
大于等于-ge
小于等于-le
等于-eq
不等于-ne

字符串的判断

逻辑符号
等于==
不等于!=
并且-a
或者-o

循环控制

for循环

使用{}表示循环的范围,这种方法定义简单,但是不能用变量来进行括号内数据的替换。

for i in {1..10}				#开始..结束
do
  echo 变量是:$i
done

for i in {1..10..2}			#开始..结束..步长
do
  echo 变量是:$i
done

for i in {10..1}
do
  echo 变量是:$i
done

for i in {10..1..2}
do
  echo 变量是:$i
done

使用Linux的seq命令进行范围的表达:

for i in `seq 1 10`			#开始  结束
do
  echo 变量是:$i
done

for i in `seq 1 2 10`		#开始 步长 结束
do
  echo 变量是:$i
done

for i in `seq 10 -1 1` 	#从大到小,步长要写成负数
do
  echo 变量是:$i
done

min=1
max=10
for i in `seq $min $max`
do
  echo 变量是:$i
done

使用数组的内容进行循环

fruits=(apple orange banana)
for f in ${fruits[*]}
do
  echo 变量是:$f
done

使用其它系统命令进行循环

for i in `ls /opt`
do
  echo 文件名字是:$i
done

使用类C语言的方式进行循环

for ((i=1;i<=10;i++))
do
  echo 变量是:$i
done

for ((i=1;i<=10;i+=2))
do
  echo 变量是:$i
done

while循环

语法
whlie [循环条件]
do
执行语句
done
练习:
有一张纸的厚度是1毫米,珠穆朗玛峰高度是8848米,试问纸折几次厚度会超过山

#!/bin/bash
zhi=1
mount=8848000
count=0
while [ $zhi -lt $mount ]
do
 let zhi=zhi * 2
 let count++
done
echo "$count:$zhi"

函数

定义函数

语法
function 函数名(){
代码块
return 返回值
}

  • 不写参数,小括号是为了与其他语言匹配
  • 返回值不是必须的,shell的函数中,返回值只能返回 0-255 的数字,这个数字的返回一般是用来给调用者去判断函数的执行是否成功的。
  • 可以把linux的每一个命令,都当成系统定义好的函数来看待,例如 touch a.txt,touch本身是一个函数,a.txt是传递给函数的一个参数值。所以命令都有返回值,如果返回值是0,就表示操作成功,其他数字都是失败。
  • $? 是返回值
  • $* 是所有的参数
  • $# 是参数的数量
  • $数字 是指定位置的参数,$1 $2
  • 在文件里面,调用函数的时候,参数也可以写成 $ 的形式表示这里不定义参数,这里也是在接受参数,参数是在调用文件的时候,写在文件名字后面的。例如: sh t3.sh 1 2 3

http://www.niftyadmin.cn/n/5668944.html

相关文章

网络安全(黑客技术) 最新三个月学习计划

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、…

【网络原理】Tcp 常用提升效率机制——滑动窗口,快速重传,流量控制, 拥塞控制, 建议收藏 !!!

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

(k8s)kubernetes集群基于Containerd部署

资源列表 基础环境 一、基础环境准备 1.1、关闭Swap分区 1.2、添加hosts解析 1.3、桥接的IPv4流量传递给iptables的链 二、准备Containerd容器运行时 2.1、安装Containerd 2.2、配置Containerd 2.3、启动Containerd 三、部署Kubernetes集群 3.1、安装Kubeadm工具 3.2、…

EmguCV学习笔记 VB.Net 12.1 二维码解析

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

【React】(推荐项目)一个用 React 构建的 CRUD 应用程序

推荐项目&#xff1a;CRUD 应用示例 在本篇文章中&#xff0c;我想向大家推荐一个非常实用的项目&#xff1a;CRUD 应用示例。这个项目展示了如何使用现代技术栈创建一个基础的增删改查&#xff08;CRUD&#xff09;应用&#xff0c;非常适合用于学习和实践后端开发技能。 适…

Java 在 GIS 领域的学习路线?

Java是一门广泛应用于企业级开发的编程语言&#xff0c;而GIS则是一种常用于地理信息处理和分析的技术。将Java与GIS结合起来&#xff0c;可以在企业级应用中实现更多的功能和业务需求&#xff0c;且在实际领域越来越广泛。 Java在GIS中重要的作用 1、跨平台性 Java具有跨平台…

AIoT智能工控板

在当今竞争激烈的商业环境中&#xff0c;企业需要强大的科技力量来助力腾飞&#xff0c;AIoT智能工控板就是这样的力量源泉。 其领先的芯片架构设计&#xff0c;使得主板的性能得到了极大的提升。无论是数据的处理速度、图形的渲染能力&#xff0c;还是多任务的并行处理能力&a…

福禄克 PoE 工业以太网线缆验测仪

当用了福禄克的测试设备后就再也不会考虑其他的测试工具了。 看起来都差不多&#xff0c;各种 Cat 5 的测试工具都买了&#xff0c;从最便宜的 10 多块钱测线序的到右边用的这个 40 多块钱的。 右边这个让人非常恼火的就是经常性测不准。 见过测 POE 的乱跳&#xff0c;完全不…