shell脚本基础

news2024/9/24 7:23:29

目录

一、概述

二、shell

(一)shell命令解释环境

(二)类型

(三)查看系统中支持的shell:cat /etc/shells

(四)查看系统默认shell: echo $SHELL

三、变量

(一)变量组成

1、变量名

2、变量值

(二)变量类型

1、系统内置变量(环境变量)

2、自定义变量

(三)位置变量(脚本后参数所在的位置)

(四)预定义变量

(五)作用域

四、运算符——数学运算

(一)数学运算符

(二)运算方法

 (三)字符串运算

(四)$((a+b))        echo $((a+b))

(五)$[a+b]        echo $[a+b]

五、运算符——比较运算

(一)条件测试

1、test var1 比较符 var2

2、[ var1 比较符 var2 ]

3、举例

 4、&&

5、||

6、;​编辑

 7、举例

 (二)数值比较

(三)字符串比较

 (四)文件比较

(五)逻辑运算符

六、shell脚本编写规范

七、shell运行规则

(一)没有x权限

(二)有x权限

八、shell脚本运行追踪: bash -x 脚本所在路径/脚本文件

九、返回100内随机数

​编辑十、返回1到10 的连续数字

(一)echo   {1..10}

(二) seq 1 10

(三)返回1.1 2.1 3.1.... 10.1

十一、读取键盘输入并赋值给变量名

十二、语句——条件语句

(一)单分支if

(二)双分支if

 (三)多分支if

 十三、语句——循环语句

(一)for

1、格式

2、for循环由while循环演变

 3、举例:

(二)while

1、格式

2、举例:

(三)开关语句——case


一、概述

脚本就是将手动一次性执行的命令进行规范且自动化

二、shell

(一)shell命令解释环境

(二)类型

1、sh

2、ash

3、bsh

4、csh

5、bash

6、tcsh(国产默认)

7、dsh(苹果默认)

8、zsh

(三)查看系统中支持的shell:cat /etc/shells

(四)查看系统默认shell: echo $SHELL

三、变量

(一)变量组成

1、变量名

①不会变化(容器...)

②声明规范

不能是数字或数字开头
以_或字母开头
变量名中不能包含特殊字符

③声明方法

驼峰式:userName

双驼峰:UserName

shell写法:
    user_name
    username
    USERNAME

2、变量值

①不断变化

② 数字、字符

(二)变量类型

1、系统内置变量(环境变量)

查看环境变量:env

2、自定义变量

①varName=varValue

#等号两边不能有空格
②数字

var1=1

③字符串

#shell中可以不使用引号

#当包含有空格时,需要使用引号 

(三)位置变量(脚本后参数所在的位置)

共有九个,分别是:$1、$2、$3、$4、$5、$6、$7、$8、$9

(四)预定义变量

①$0:脚本本身的名称

②$#:脚本后参数的个数

③$*:脚本运行时参数的内容(整体输出)

④$@: 脚本运行时参数的内容(逐个输出)

⑤$?:脚本运行完毕后的返回值
默认情况:        0                成功
                          非0            失败

(五)作用域

①默认变量只在当前shell下生效

②若要在当前及其子shell下生效,需要声明为全局变量

export

四、运算符——数学运算

(一)数学运算符

1、+        相加

2、-         相减

3、*         相乘

4、/         相除

5、%        取余

(二)运算方法

1、expr

①expr $a + $b

②相加或相减

expr 10 + 5    # 输出 15

expr 10 - 5    # 输出 5

③相乘或相除

expr 10 \* 5    # 输出 50

#在进行相乘或者进行乘法的时候需要使用 \* 转义符,因为 * 本身在shell中表示通配符。

 (三)字符串运算

①expr length "mystring"        # 输出字符串长度:8

②expr substr "mystring" 2 3    # 输出字符串子串:yst

③expr index "mystring" r      # 输出字符所在位置:4

(四)$((a+b))        echo $((a+b))

(五)$[a+b]        echo $[a+b]

#注意:shell不支持浮点数的显示

 #echo  自带换行                                #echo   -n   取消换行

五、运算符——比较运算

(一)条件测试

1、test var1 比较符 var2

2、[ var1 比较符 var2 ]

3、举例

 4、&&

[ $a -ne $b ] &&  echo OK
条件 && 输出结果
条件为真输出,否则不输出

5、||

[ $a -ne $b ] ||  echo OK
条件 || 输出结果
条件为假输出,否则不输出

6、;

 7、举例

 (二)数值比较

1、-eq        等于

2、-ne        不等于

3、-lt         小于

4、-le        小于等于

5、-gt        大于

6、-ge        大于等于

(三)字符串比较

1、=                字符串一致

2、!=               字符串不一致

3、-z               字符串为空

4、!     -z        字符串不为空

5、举例
    
    
    

 (四)文件比较

1、-e         文件或目录是否存在

2、-d        是否为目录

3、-f          是否为文件

4、-r          判断文件是否可读

5、-w         判断文件是否可写

6、-x         判断文件是否可执行

(五)逻辑运算符

1、&&        -a
表示并且,有假则假,全真为真
举例:[ -r 111 -a -w 111 -a -x 111 ]
           [ -r 111 ] && [ -w 111 ] &&  [ -x 111 ]

2、||        -o
表示 或者,有真则真,全假为假

3、!
表示取反,有真则假,有假则真

六、shell脚本编写规范

第一行        #!/bin/bash
第二行        #脚本的说明
第三行        脚本正文

七、shell运行规则

(一)没有x权限

1、bash  脚本所在路径/脚本文件

2、source 脚本所在路径/脚本文件

3、.      脚本所在路径/脚本文件

(二)有x权限

1、./脚本文件

2、脚本绝对路径/脚本文件

八、shell脚本运行追踪: bash -x 脚本所在路径/脚本文件

九、返回100内随机数

命令:echo    $[$RANDOM%100]


十、返回1到10 的连续数字

(一)echo   {1..10}

   

(二) seq 1 10

   

(三)返回1.1 2.1 3.1.... 10.1

seq 1.1 10.1

十一、读取键盘输入并赋值给变量名

命令:read -p "提示语" 变量名

十二、语句——条件语句

(一)单分支if

for 条件(i in 值)|((i=1;i<=10;i++))
do
    语句
done

举例:

(二)双分支if

if [ ];then
else
fi

举例:

 (三)多分支if

if [ ];then
elif [ ];then
else
fi

举例:

 十三、语句——循环语句

(一)for

1、格式

for 条件(i in 值)|((i=1;i<=10;i++))
do
    语句
done

2、for循环由while循环演变

 3、举例:

创建多个用户

 删除多个有规律的用户

九九乘法表

详见http://t.csdn.cn/KmbeB

(二)while

1、格式

i=1
while 条件
do
    语句
    let  i++
done

2、举例:

剪子包袱锤

猜大小

 详见http://t.csdn.cn/KmbeB

(三)开关语句——case

case $1 in
条件1)
    语句
;;
条件2)
    语句
;;
*)
    帮助信息
;;
esac

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/658436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTMLCSS Day04 CSS盒模型

文章目录 1.盒子组成盒子属性&#xff08; Box properties&#xff09;marginborderpaddingwidth & height盒子一般指的是块元素&#xff0c;盒子是我们布局的重要机制。一个盒子应该由外边距、边框、内边距、内容组成。 - width & height- 边框属性1.什么是边框?2.边…

TiDB Contributor 资料汇总

作者&#xff1a; Billmay表妹 原文来源&#xff1a; https://tidb.net/blog/cf95cdb7 开源社区建设 TiDB 社区是由 TiDB 生态中的开发者、用户、合作伙伴一起建立的分享、学习平台。TiDB 线上社区汇聚了 29149 位 TiDB 资深用户&#xff08;注册用户数&#xff09;&#x…

将一个一维数组前段和后端的0元素去除的numpy.trim_zeros()方法

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 除去一维数组第一个非零元素之前的零 除去一维数组最后一个非零元素之后的零 numpy.trim_zeros() 选择题 关于以下代码说法错误的一项是? import numpy as np a np.array([0,0,1,0,2,0,0])…

前端Vue分享菜单按钮弹框、微博分享、QQ分享、微信好友、朋友圈

前端Vue分享菜单按钮弹框、微博分享、QQ分享、微信好友、朋友圈 &#xff0c; 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id13085 效果图如下&#xff1a; #### 使用方法 使用方法 <!-- 分享 ref: 设置一个唯一ref contentHeight&#xff…

记一次fastjson事件应急响应

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 事件背景介绍02 事件分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中&#xff0c;安全部门收到通知&#xff0c;称公司内部资产被入侵&#xff0c;且可能已经开始内网横…

YOLO V2原理总结

yolo v2在yolo v1的基础上添加或更换了一些内容&#xff0c;一定程度上结局了yolo v1的一些问题。 ✨1 概括 做出的改变有8个&#xff1a; 添加Batch Normalization层高分辨率主干网络anchor box机制全卷积网络结构新的主干网络K-means聚类先验框使用更高分辨率特征多尺度训练…

(十)异步-委托异步调用(4)

一、委托异步执行 当委托对象被调用时&#xff0c;它调用其调用列表中包含的方法。这是同步完成的。 如果委托对象在调用列表中只有一个方法&#xff08;引用方法&#xff09;&#xff0c;它就可以异步执行这个方法。委托类有两个方法&#xff0c;叫作 BeginInvoke 和 EndInv…

【计算机网络】进程崩溃或网络中断后,TCP 连接还存在吗?

【计算机网络】进程崩溃或网络中断后&#xff0c;TCP 连接还存在吗&#xff1f; 参考资料&#xff1a; TCP 连接&#xff0c;一端断电和进程崩溃有什么区别&#xff1f; 拔掉网线后&#xff0c; 原本的 TCP 连接还存在吗&#xff1f; TCP/IP卷一:94—TCP保活机制 TCP Keepaliv…

记一次gitlab应急响应

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 事件背景介绍02 事件分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中&#xff0c;态势感知平台上出现gitlab RCE漏洞攻击成功告警&#xff0c;现需根据流量情况进行安全…

013、数据库管理之连接管理

连接管理 TiDB的连接特性连接TiDB 数据库开发接口支持 实验案例 TiDB的连接特性 无状态MySQL协议支持 100% 兼容MySQL 5.7协议支持MySQL 5.7常用功能与语法 MySQL 语法支持的限制&#xff08;不支持的功能特性&#xff09; 存储过程触发器外键函数其它 连接TiDB 数据库 使…

记一次shiro应急响应

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 事件背景介绍02 事件分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中&#xff0c;安全部门监测到WAF上存在shiro攻击成功告警信息&#xff0c;现需根据流量情况进行安全…

Vue中的表单上传与文件预览

Vue中的表单上传与文件预览 在Web应用程序中&#xff0c;文件上传和预览是非常常见的功能。在Vue中&#xff0c;我们可以使用axios和FormData来实现表单上传&#xff0c;使用FileReader来实现文件预览。在本文中&#xff0c;我们将介绍如何在Vue中实现表单上传和文件预览功能。…

[阿里云使用k8s技术部署微服务]

1.1 检查CPU/内存/网络设置 对虚拟机的要求(必须): CPU:最少2核 内存:master >4G&#xff0c;node >3G 网络:NAT模式 操作系统版本: Docker 要求 CentOS 系统的内核版本必须高于 3.10。 如果内核版本为3.10&#xff0c;则发行编号最好能升级到1127&#xff0c; 即:3.10.0…

1000*B. Keep it Beautiful

input 3 9 3 7 7 9 2 4 6 3 4 5 1 1 1 1 1 5 3 2 1 2 3output 111110010 11111 11011 解析&#xff1a; 如果数据不小于前一个数据&#xff0c;则一直为美丽序列&#xff1b; 当碰到第一个小于末尾的数据时&#xff0c;1. 如果他比首数据大&#xff0c;则不符题意。2. 小于等…

【ARMv8 SIMD和浮点指令编程】NEON 移动指令——精通 MOV?

移动指令主要涉及 MOV 和 MVN&#xff0c;它们分别是移动和求反移动。如果你认为仅仅两条指令&#xff0c;还是太小看设计者了&#xff01; 1 MOV (element) 将向量元素移动到另一个向量元素。该指令将源 SIMD&FP 寄存器的向量元素复制到目标 SIMD&FP 寄存器的指定向…

短视频seo系统源码私有化部署分享

短视频seo矩阵系统源码部署需要以下步骤&#xff1a; 确定系统环境要求&#xff1a;账号矩阵系统需要服务器环境支持PHP和MySQL数据库&#xff0c;因此需要确保服务器环境符合要求&#xff0c;并安装好相应的软件。例如&#xff0c;可以使用XAMPP或WAMP等软件包来快速安装PHP和…

中国唯一 一家Linux 基金会金牌会员 落户阿里云

导读2 月 20 日&#xff0c;全球知名非营利性组织 Linux 基金会宣布&#xff0c;阿里云正式成为 Linux 基金会金牌会员。阿里云表示将持续加大对开源项目的支持&#xff0c;并发挥自己的力量。 2 月 20 日&#xff0c;全球知名非营利性组织 Linux 基金会宣布&#xff0c;阿里云…

pyqt6安装

1、安装pyqt6和pyqt6-tools包 注意&#xff1a;pyqt6-tools目前仅支持python3.9版本&#xff0c;3.9版本后的安装部成功。&#xff08;截止2022.11.20&#xff09; 1.1 安装pyqt6和pyqt6-tools 安装pyqt和pyqt6-tools可以使用conda和pip进行安装 &#xff08;1&#xff09;…

【备战秋招】每日一题:2023.05-B卷-华为OD机试 - 报文回路

为了更好的阅读体检&#xff0c;可以查看我的算法学习博客报文回路 输入描述 第一行抓到的报文数量&#xff0c;后续C行依次输入设备节点D1和D2&#xff0c;表示从D1到D2发送了单向的报文&#xff0c;D1和D2用空格隔开 输出描述 组播通路是否“正常”&#xff0c;正常输出T…

SQL语言的四大组成部分——DCL(数据控制语言)

1️⃣前言 SQL语言中的DCL&#xff08;Data Control Language&#xff09;是一组用于控制数据库用户访问权限的语言&#xff0c;主要包括GRANT、REVOKE、DENY等关键字。 文章目录 1️⃣前言2️⃣DCL语言3️⃣GRANT关键字4️⃣REVOKE关键字5️⃣DENY关键字6️⃣总结附&#xff1…