Linux-实操篇8-shell脚本编写

news2025/7/6 3:37:21

一、shell是什么

在这里插入图片描述

二、shell脚本如何执行

2.1 新建一个shell脚本

## 第一步新建一个shell脚本
vim aaa.sh
## 内容如下,#!/bin/bash 表示shell脚本的执行协议,必须要写
#!/bin/bash
echo "hello word!!!"

2.2 执行方式

方式一:先给脚本权限,在输入脚本的绝对路径或相对路径

chmod 777 aaa.sh
./aaa.sh

方式二:★直接用sh + 脚本,不需要权限

sh aaa.sh

三、句法

3.1 shell变量

定义变量的规则:
在这里插入图片描述
将命令的返回值赋给变量(重点)
在这里插入图片描述
多行注释
在这里插入图片描述

3.1.1 系统变量

#!/bin/bash
echo "HOME=$HOME"
echo "PWD=$PWD"
echo "SHELL=$SHELL"
echo "USER=$USER"

3.1.2 自定义变量

echo 自定义变量
AAA=100
BBB=张三
# 撤销变量
unset BBB
echo AAA=$AAA
echo BBB=$BBB

3.1.3 静态变量

静态变量不能 unset

echo 静态变量
readonly CCC=200
echo 静态变量CCC=$CCC

3.1.4 配置环境变量

export 变量名=变量值        (功能描述:将shell变量输出为环境变量)
source 配置文件             (功能描述:让修改后的配置信息立即生效)
echo $变量                 (功能描述:查询环境变量的值
vim /opt/profile
## 在其他添加
export TOMCAT_9001=/opt/tomcat_9001
## 使得环境变量生效
source /etc/profile
## 验证
echo $TOMCAT_9001

3.1.5 位置参数变量

注意在这里插入图片描述
注意:再center7.x以后 $* 和 $@ 是一样的,都是分开的多个参数
aaa.sh

echo ------------------
echo 位置参数变量
echo "各个参数:$0,$1,$2"
echo "参数:$*"
echo "参数:$@"
echo "参数个数:$#"

执行

sh aaa.sh 100 200 300

在这里插入图片描述

3.1.6 预定义变量

shell设计者预算定义好的参数
在这里插入图片描述

echo 预定义参数
echo "当前的进程号:$$"
# 后台运行aaa.sh
./bbb.sh $
echo "后台运行的最后的进程号:$!"
echo "上一个命令的返回值:$?"

3.2 运算符

在这里插入图片描述

echo 运算符
## 注意这里是2个小括号才可以
echo "1+1=$((1+1))" 
## 推荐
echo "1+1=$[1+1]

3.3 条件判断语句

在这里插入图片描述
在这里插入图片描述

echo 条件判断
if [ "ok" = "ok" ]
then
        echo ok
fi
if [ 1 -lt 1 ]
then
        echo 小于
fi
if [ -r aaa.sh ]
then
        echo 可以读
fi
if [ -f aaa.sh ]
then
        echo 常规文件
fi

3.4 流程控制 if case for while

3.4.1 if 条件判断

在这里插入图片描述


        echo 小于
fi
if [ -r aaa.sh ]
then
        echo 可以读
fi
if [ -f aaa.sh ]
then
        echo 常规文件
fi

3.4.2 case 选择

在这里插入图片描述

read -p "请输入星期:" DAY
echo case 语句
case $DAY in
"1")
        echo "星期一"
;;
"2")
        echo "星期二"
;;
"3")
        echo "星期三"
;;
*)
        echo "星期天"
;;
esac

3.4.3 for循环

在这里插入图片描述
在这里插入图片描述

echo "for的两种用法:"
for i in $@
do
        echo "then num is $i"
done
SUM=0
for((i=1;i<100;i++))
do
        SUM=$[$SUM+$i]
done
echo "SUM=$SUM"

3.4.4 while循环

在这里插入图片描述

echo while 循环
i=1
WSUM=0
while [ $i -le $1 ]
do
WSUM=$[$WSUM+$i]
i=$[$i+1]
done
echo "WSUM=$WSUM"

3.5 read读取控制台输入

在这里插入图片描述
在这里插入图片描述

echo 从前台输入
## 10秒内输入
read -t 10 -p "10秒内输入:" DAYTIME
echo $DAYTIME

3.6 ★函数

在这里插入图片描述

3.6.1 系统函数

basename 函数 获取文件名

在这里插入图片描述

dirname 函数 获取文件路径

在这里插入图片描述

echo 系统函数
echo "dirname"  $(dirname /usr/myshell/aaa.sh)
echo "basename" $(basename /usr/myshell/aaa.sh)
echo "basename" $(basename /usr/myshell/aaa.sh .sh)

在这里插入图片描述

3.6.2 ★自定义函数

在这里插入图片描述

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

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

相关文章

R语言中的函数19:openxlsx::read.xlsx(), write.xlsx(), writeData(), writeDataTable()

文章目录read.xlsx()函数介绍实例writeData()和writeDataTable()函数介绍实例write.xlsx()函数介绍实例read.xlsx()函数介绍 read.xlsx(xlsxFile,sheet,startRow 1,colNames TRUE,rowNames FALSE,detectDates FALSE,skipEmptyRows TRUE,skipEmptyCols TRUE,rows NULL,c…

Oracle技术分享 卸载grid软件

如果grid软件安装失败&#xff0c;可能需要重新安装&#xff0c;这时候紧紧删除软件是解决不了问题的&#xff0c;还需要删除grid的配置信息&#xff0c;需要安装软件的原因各式各样。 1 资源无法启动。 2 root.sh执行失败。 1 如果执行root.sh失败&#xff0c;可以删除&#x…

相似度系列8:unify-BARTSCORE: Evaluating Generated Text as Text Generation

BARTSCORE: Evaluating Generated Text as Text Generation 这篇文章是用生成模型解决问题&#xff0c;根据生成模型中输入和输出的差别&#xff0c;代表不同的评测方面。 不足&#xff1a;针对不同的任务选择bart score的输入和输出&#xff1f;different input and output co…

Allegro 172版本自动放置层叠

Allegro 172版本自动放置层叠 Allegro 172版本支持自动放置层叠,无需手动绘制,效果如下图 具体操作步骤如下 选择Manufacture-选择Cross Section Chart命令 会出现一个对话框 常用参数介绍如下 Chart Unit 是层叠单位 Maximun Chart height 是层叠的高度 X-Scale Factor…

预约挂号项目之预约挂号模块

目录一、预约挂号详情1、需求分析2、api接口2.1 、controller代码&#xff1a;2.2 、Service类接口&#xff1a;2.3 、添加service接口实现&#xff1a;学习指南&#xff1a; https://www.zhihu.com/question/351439302/answer/2362637429?utm_id0 一、预约挂号详情 1、需求…

[数据结构]链表OJ题 (三) 链表的中间结点、链表中倒数第k个结点、合并两个有序链表、链表分割、链表的回文结构

作者&#xff1a; 华丞臧. 专栏&#xff1a;【数据结构】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449; LeetCode刷题网站 文章目录一、链表的中间结点题目描述…

Python学习笔记(十六)——Numpy

Numpy NumPy&#xff08;Numerical Python的简称&#xff09;是高性能科学计算和数据分析的基础包&#xff0c; 其中包含了数组对象(向量、矩阵、图像等)以及线性代数等。 NumPy库主要功能 • ndarray(数组)是具有矢量算术运算和复杂广播能力的多维数组。 • 具有用于对数组数…

项目资源管理从学会向上管理开始

“如何一句话证明你当过项目经理&#xff1f;” 这个话题在网上引发了广大项目管理人的兴趣&#xff0c;纷纷发表了个人看法&#xff08;变相吐槽&#xff09;。各种回答戳中笑点&#xff0c;同时也表达了作为项目经理的心酸。  “普通的薪资水平&#xff0c;却要为整个项目的…

基于微信公众平台API的菜谱小程序 的设计与实现

摘 要 由于人们生活水平的不断提高&#xff0c;人们对网络的需求也是不断提高&#xff0c;但是又不想通过下载各种不常用的app增加手机内存。小程序正好就可以做到这个特点&#xff0c;不用下载、及实际用、用完就走&#xff0c;现在很多的行业兴起&#xff0c;尤其餐饮行业最…

D. Decrease the Sum of Digits

Problem - 1409D - Codeforces 题意: 你得到了一个正整数n。在一次移动中&#xff0c;你可以使n增加1&#xff08;即使n:n1&#xff09;。你的任务是找出为了使n的数位之和小于或等于s&#xff0c;你需要执行的最小移动数。 你必须回答t个独立的测试案例。 输入 输入的第一…

基于最小二乘支持向量机(LS-SVM)进行分类、函数估计、时间序列预测和无监督学习(Matlab代码实现)

&#x1f4dd;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;…

Webpack基础使用 + 高级配置【重点!】

http://xxpromise.gitee.io/webpack5-docs/senior/optimizePerformance.html#code-split 笔记好评&#xff01;&#xff01;&#xff01;&#xff01;一定要把网址记好&#xff0c;真的nice&#xff01;&#xff01;&#xff01;&#xff01; 只是发博客记录一下&#xff0c;没…

java后端pageHelper分页实现方法

文章目录背景方法一&#xff1a;mysql的limit进行分页方法二&#xff1a;使用插件Mybatis-PageHelper(拦截器原理)1、本质2.实现步骤引入依赖修改application.yml修改代码总结背景 当一次查库数据量较大&#xff0c;不光给数据库带来压力&#xff0c;同时前端渲染页面压力也很…

Linux权限

系列文章目录 Linux 环境搭建以及xshell远程连接_crazy_xieyi的博客-CSDN博客 Linux常用命令详解_crazy_xieyi的博客-CSDN博客 文章目录 一、用户操作二、三种角色三、文件类型和访问权限四、修改文件权限一、用户操作 Linux下有两种用户&#xff1a;超级用户&#xff08;roo…

Java - SpringBoot整合Shiro之缓存功能

Java - SpringBoot整合Shiro之缓存功能前言一. SpringBoot 整合Redis1.1 配置 RedisTemplate1.2 Shiro整合Redis缓存配置1.3 测试前言 在 上一篇文章 主要讲了Shiro权限授权和认证跳过。本篇文章就主要讲解如何整合Shiro和Redis。这样就避免携带同一个Token的时候&#xff0c;…

百趣代谢组学文献分享:真假肥胖?代谢组说了算

肥胖是当今社会面临的很普遍的健康问题之一&#xff0c;超重会显著增加患糖尿病和心血管疾病的风险。而在日常生活中&#xff0c;我们发现有些肥胖者健康状况良好&#xff0c;而有些相对较瘦的人&#xff0c;却存在患糖尿病和心血管疾病的风险。 百趣代谢组学文献分享&#xf…

基于STM32结合CubeMX学习Free-RT-OS的源码之信号量与互斥量

目录 CUBEMX上的配置以及使用 信号量 互斥量 CUBEMX上的配置以及使用 信号量与互斥量都是从队列中衍生出来的&#xff0c;他们是一种特殊的队列。不同的地方在于:他们不含有队列的数据部分&#xff0c;只有队列结构体。 定义属性&#xff08;这里只有一个名字&#xff09;和…

Handler 消息队列中的同步屏障——Message

Message 分为3种&#xff1a;普通消息&#xff08;同步消息&#xff09;、屏障消息&#xff08;同步屏障&#xff09;和异步消息。我们通常使用的都是普通消息&#xff0c;而屏障消息就是在消息队列中插入一个屏障&#xff0c;在屏障之后的所有普通消息都会被挡着&#xff0c;不…

隐式类型转换(整形提升)

隐式类型转换1.定义2.整形提升例子3.char的取值范围和一些技巧1.定义 1.c的整形算术运算总是至少以缺省整形类型的精度来进行的。 2.为了获取这个精度&#xff0c;像字符型&#xff0c;短整形在使用之前会转换为整形&#xff0c;这种转换被称为整形提升 3.整形提升时补最高位的…

Baklib|信息管理和知识管理是如何影响你的业务的?

有效的信息和知识管理可以让您消除库和共享知识。本文讨论了信息管理和知识管理的来龙去脉。信息管理和知识管理通常可以互换使用&#xff0c;但也有关键的区别。了解这些差异以及它们如何影响您的业务&#xff0c;可以使您优化管理策略、简化工作流程并提高生产率。 本文涵盖…