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兆左右,…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
