shell简单使用介绍
脚本的基本元素
声明,在解释并执行当前脚本文件中的语句之前,需要声明使用的命令解释器
#一般写的解释器为
#!/bin/bash这里的#不再是注释了,而是必要的声明
命令,也就是需要执行的语句
注释,对代码进行解释说明
分为单行注释和多行注释
单行注释 以#开头的一整行
#这里是注释
#这里也是注释多行注释 使用冒号“:”配合here document可实现
:<<block
这里是注释
这里也是注释
这里还是注释
block
赋予rx的权限
shell脚本编写规则
建议脚本文件名应该简单清晰明了,看了就知道意思
文件开头指定脚本解释器 #!/bin/sh或者#!/bin/bash
在开头写明版本特权等信息
尽量使用英文注释
shell常用的命令
echo
echo是用于终端打印的基本命令,默认情况下,echo 在每次调用后会添加一个换行符
[root@localhost shell]# echo hello
hello
[root@localhost shell]# echo "hello world"
hello world
[root@localhost shell]# echo "hello;world"
hello;world
[root@localhost shell]# echo hello;world
hello
bash: world: command not found...
Failed to search for file: /mnt/BaseOS was not found#注意这里的双引号""用来包含整个语句,防止被;打断语句echo参数 | 说明 |
-n | 不换行输出 |
-e | 解析转义字符 |
\n | 换行 |
\r | 回车 |
\t | 制表符 |
\b | 退格 |
\v | 纵向制表符 |
[root@localhost shell]# echo -n why so serious
why so serious[root@localhost shell]#
[root@localhost shell]# echo -e why\tso\tserious
whytsotserious
[root@localhost shell]# echo -e "why\tso\tserious"
why so seriouseval
命令格式:eval args
功能:当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令,然后执行
[root@localhost shell]# a='shuju;head -1 /etc/passwd'
[root@localhost shell]# echo $a
shuju;head -1 /etc/passwd
[root@localhost shell]# eval echo $a
shuju
root:x:0:0:root:/root:/bin/bashexec
命令能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行
完毕后,该进程就终止了
export
export设置或者显示环境变量
read
read 是一个重要的 bash 命令,用于从键盘或标准输入读取文本,我们可以使用 read 命
令以交互形式读取来自用户的输入
通常我们按下回车键表示命令输入完成,但是很特殊情况下,我们需要基于字符数或者
特定字符来表示命令输入完成
-p prompt:设置提示信息
-t timeout:设置输入等待时间,单位默认为秒[root@localhost shell]# read -t 10 -p "please input your name:" name
please input your name:me
[root@localhost shell]# echo $name
me
[root@localhost shell]# echo -n "please input your name:"; read name1 name2
please input your name:me you
[root@localhost shell]# echo $name1
me
[root@localhost shell]# echo $name2
youshift
在程序中每使用一次shift语句,都会使所有的位置参数依次向左移动一个位置,
并使位置参数$#减1,直到减到0为止
exit
退出shell程序
shell脚本的执行方式
bash ./filename.sh——产生子进程,再运行,使用当前指定的bash shell去运行
./filename.sh
产生子进程,再运行,使用脚本里面指定的shell去运行。使用该种方式
执行需要x权限
source ./filename.sh
source命令是一个shell内部命令,其功能是读取指定的shell程
序文件,并且依次执行其中的所有的语句,并没有创建新的子shell进程,所以脚本里面所有创
建的变量都会保存到当前的shell里面
.filename.sh——和source一样,也是使用当前进程执行
首选我们写一个以 .sh结尾的文件
vim read01.sh
#!/bin/bashread -n1 -p "DO you want wo continue [Y/N]" answer
case $answer inY|y)
echo "fine,continue";;N|n)
echo "ok,good bye";;*)
echo "error choice";;
esac
exit 0
使用各种方法执行它
这里使用第一种方法
[root@localhost shell]# bash ./read01.sh
DO you want wo continue [Y/N]yfine,continue
相关文章:
shell简单使用介绍
脚本的基本元素声明,在解释并执行当前脚本文件中的语句之前,需要声明使用的命令解释器#一般写的解释器为 #!/bin/bash这里的#不再是注释了,而是必要的声明命令,也就是需要执行的语句注释,对代码进行解释说明分为单行注…...
RK3568平台开发系列讲解(调试篇)内核函数调用堆栈打印方法汇总
🚀返回专栏总目录 文章目录 一、dump_stack 函数二、WARN_ON(condition)函数三、BUG_ON (condition)函数四、panic (fmt...)函数沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将对驱动调试方法进行汇总学习。 一、dump_stack 函数 dump_stack 作用:打印内核调…...
一次内存泄露排查
前因: 因为测试 长时间压测导致 接口反应越来越慢,甚至 导致服务器 崩溃 排查过程 1、top 查看是 哪个进程 占用 内存过高 2、根据 进程 id 去查找 具体是哪个 程序的问题 ps -ef| grep 41356 可以看到 具体的 容器位置 排查该进程 对象存活 状态…...
「Mac安装ps」Adobo Photoshop 2023 下载安装详情教程,支持 AI 插件的 24 版 Photoshop
前言 Adobo Photoshop 2023 已推出,由于目前AI人工智能技术火爆,而很多的 AI 插件最低也需要24版的 photoshop ,所以这里我遍搜集并整理了此新版本的 photoshop 安装使用教程,后续也将提供 AI 插件的下载安装教程 安装文件下载 …...
Redis单线程还是多线程?IO多路复用原理
目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、Redis6.0引入多线程四、Redis主线程和IO线程是如何完成请求的?1、服务端和客户端建立socket连接2、IO线程读取并解析请求3、主线程执行请求命令4、IO线程会写回socket和主线程清…...
小菜鸟Python历险记:(第五集)
今天写的文章是记录我从零开始学习Python的全过程。在Python中对方法进行备注的时候,往往都是写在方法中的第一行所在位置。在书写注释以后,在调用方法的时候,鼠标点击方法会有一个浮动的提示显示备注内容。具体如下图所示:注释的…...
【思维模型】五分钟了解<复利思维>,为何学习复利思维?什么是复利思维?如何应用复利思维?
【思维模型】五分钟了解<复利思维>,为何学习复利思维?什么是复利思维?如何应用复利思维?1. 为何学习复利思维?2. 什么是复利思维?3. 如何应用复利思维?4. 小结参考&#…...
Vue.js语法详解:从入门到精通
Vue.js是一个流行的JavaScript框架,用于构建用户界面。它的核心特性包括数据双向绑定、组件化架构、虚拟DOM和响应式系统等。在本文中,我们将深入探讨Vue.js的语法,帮助读者更好地理解和应用Vue.js。1.模板语法Vue.js的模板语法采用了类似HTM…...
程序员的代码行数越少越好?
有些人可能会认为,应用程序中的代码行越少,就越容易阅读。这句话只有部分正确,我认为代码可读性的度量标准包括:代码应具备一致性代码应具备自我描述性代码应具备良好的文档代码应使用稳定的现代功能代码不应过于复杂代码的性能不…...
【每日一题Day156】LC1032字符流 | 字典树
字符流【LC1032】 设计一个算法:接收一个字符流,并检查这些字符的后缀是否是字符串数组 words 中的一个字符串。 例如,words ["abc", "xyz"] 且字符流中逐个依次加入 4 个字符 a、x、y 和 z ,你所设计的算法…...
V2G模式下含分布式能源网优化运行研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 📋📋📋本文目录如下:🎁🎁🎁 目录 💥1 概述 📚2 运行结果 &am…...
手写一个简单的RPC框架
学习RPC框架,由繁化简,了解其本质原理 文章目录项目简介什么是RPC?项目模块项目代码common模块client模块server模块framework模块测试项目简介 什么是RPC? RPC(Remote Procedure Call)即远程过程调用&am…...
【剑指offer】旋转数组的最小数字
👑专栏内容:剑指offer⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录一、题目描述1、题目2、示例示例1示例2二、题目分析1、暴力法2、二分法三、代码汇总1、暴力法2、二分法一、题目描述 1、题…...
【Dorker】Portainer轻量级可视化工具
文章目录Portainer简介登录Portainer第一次登录需创建admin,访问地址:xxx.xxx.xxx.xxx:9000选择local选项卡后本地docker详细信息展示安装nginx私有镜像仓库管理Portainer简介 Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板…...
基于 vue.js 进行组件封装的方案
摘要:本文将介绍如何基于 vue.js 进行组件封装的方案。我们将从分析组件封装的优势开始,然后依次介绍 vue.js 的基本概念,以及如何创建、封装和使用自定义组件。最后,我们将通过一个实际的示例,演示如何实现一个基于 v…...
【Unityc#专题篇】之c#基础篇
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:uni…...
Python(白银时代)——模块、包、异常
异常 概念 程序运行时,如果Python 解释器遇到了错误,会停止程序运行,并且提示错误信息,这就是异常 程序停止执行并提示错误信息的动作,称为 抛出异常 异常捕获 try: 里面的代码,不确定是否能够正常执行. …...
小程序和Vue写法的区别
小程序和Vue写法的区别主要有以下几点: 语法不同:小程序使用的是WXML、WXSS和JS,而Vue使用的是HTML、CSS和JSX。 数据绑定方式不同:小程序使用的是双向数据绑定,而Vue使用的是单向数据流。 1)在小程序中需…...
如何实现分布式锁
一、锁的作用 锁是为了解决多线程情况下,对于共享资源的访问安全问题。 但是当系统是分布式的时候,本地锁已经没法锁住所需要的资源,因为本地获取了锁,其他系统无法得知本地锁的情况。 分布式锁,是独立于系统的第一方…...
使用VS2019连接Microsoft SQL Server Compact 4.0数据库
简介 SQL Server Compact Edition是微软推出的一个适用于嵌入到移动应用的精简数据库产品,Windows Mobile开发人员能够使用SQL Server CE开发出将数据管理能力延展到Window Mobile移动设备上的应用程序。虽然SQL Server CE占用的磁盘空间只有3到5兆左右,…...
AI写专著全攻略:从构思到完稿,快速生成20万字专著
学术专著写作困境与AI工具解决方案 学术专著的生命力源于其逻辑的严谨性,但在写作过程中,逻辑论证往往是最容易出现问题的部分。专著的写作必须围绕核心观点展开系统的论证,要不仅深入阐述每一个论点,还需要应对来自不同学派的争…...
模拟芯片巨头Maxim 2010技术日深度解读:从工艺到应用的创新启示
1. 一场迟到的“技术盛宴”:深入解读Maxim 2010年编辑分析师日 在半导体行业,尤其是模拟芯片这个领域,巨头们的一举一动都牵动着整个产业链的神经。2010年9月底,模拟与混合信号半导体领域的“安静巨人”——Maxim Integrated&…...
毕业设计救星:手把手教你用51单片机和HX711搞定高精度电子秤(附Proteus仿真+完整代码)
毕业设计实战指南:基于51单片机与HX711的高精度电子秤系统开发 在电子信息类专业的毕业设计中,基于51单片机的电子秤系统一直是热门选题。这个项目不仅涵盖了单片机开发的核心技能点,还能让学生深入理解传感器应用、模数转换原理以及人机交互…...
RoboMaster视觉入门:用OpenCV3.4.5从摄像头图像里找出装甲板(附完整C++代码)
RoboMaster视觉实战:从零构建装甲板识别系统(C/OpenCV3.4.5全解析) 在RoboMaster机甲大师赛中,视觉识别系统如同战车的"眼睛",而装甲板识别则是核心中的核心。本文将带你从零开始,用OpenCV3.4.5…...
批量生成内容?先优化你的Prompt!
很多人用 GPT 批量生成内容时,问题不是模型不够强,而是指令太模糊。 比如:帮我写一些小红书文案。 生成 50 个标题。 给我做一批产品介绍。这些指令看似省事,实际很容易带来三个问题: 输出风格不稳定内容重复、泛泛而谈…...
HDFS底层原理深度解析 | 读写流程、NameNode工作机制、DataNode心跳与数据完整性
📌 前言 作为大数据开发者,深入理解HDFS的底层原理至关重要。本文将从读写数据流程、NameNode与SecondaryNameNode工作机制、DataNode心跳与数据完整性三个核心维度,结合源码与架构图,带你彻底搞懂HDFS的设计哲学。一、HDFS架构回…...
基于有限状态机的LLM智能体:Haath架构解析与工程实践
1. 项目概述:一个基于状态机的自主LLM智能体如果你正在构建或使用LLM智能体,大概率遇到过这样的困境:你把所有能调用的工具、API、函数都一股脑儿塞给模型,然后满怀期待地发出指令。结果呢?模型要么在几十个选项里犹豫…...
CANN/asc-devkit注册默认Tiling
REGISTER_TILING_DEFAULT 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https:…...
开源材料计算自动化平台OpenClaw:从高通量筛选到机器学习集成
1. 项目概述:一个材料科学领域的开源协作实验室最近在GitHub上看到一个挺有意思的项目,叫openclaw-materials-lab。光看这个名字,就能嗅到一股浓浓的交叉学科味道——“openclaw”听起来像是个工具或框架名,“materials lab”则直…...
8.4.3 开始屏幕和任务栏的优化:StartAllBack 找回高效 Windows 11 使用体验
🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Sysinternals实战教程》 《Windows PowerShell 实战》 《WINDOWS教程》 《IOS教程》 《微信助手》 《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》 🌟 让…...
