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 serious
eval
命令格式: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/bash
exec
命令能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行
完毕后,该进程就终止了
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
you
shift
在程序中每使用一次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
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
shell简单使用介绍
脚本的基本元素声明,在解释并执行当前脚本文件中的语句之前,需要声明使用的命令解释器#一般写的解释器为 #!/bin/bash这里的#不再是注释了,而是必要的声明命令,也就是需要执行的语句注释,对代码进行解释说明分为单行注…...
![](https://img-blog.csdnimg.cn/b1bb225ec1f545e3bfdaab0198d5d61f.png#pic_center)
RK3568平台开发系列讲解(调试篇)内核函数调用堆栈打印方法汇总
🚀返回专栏总目录 文章目录 一、dump_stack 函数二、WARN_ON(condition)函数三、BUG_ON (condition)函数四、panic (fmt...)函数沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将对驱动调试方法进行汇总学习。 一、dump_stack 函数 dump_stack 作用:打印内核调…...
![](https://img-blog.csdnimg.cn/8dd3cba53b804b189430745c8218ebf1.png)
一次内存泄露排查
前因: 因为测试 长时间压测导致 接口反应越来越慢,甚至 导致服务器 崩溃 排查过程 1、top 查看是 哪个进程 占用 内存过高 2、根据 进程 id 去查找 具体是哪个 程序的问题 ps -ef| grep 41356 可以看到 具体的 容器位置 排查该进程 对象存活 状态…...
![](https://img-blog.csdnimg.cn/e45634e4f8114843bcbda7cc1346f0e0.png)
「Mac安装ps」Adobo Photoshop 2023 下载安装详情教程,支持 AI 插件的 24 版 Photoshop
前言 Adobo Photoshop 2023 已推出,由于目前AI人工智能技术火爆,而很多的 AI 插件最低也需要24版的 photoshop ,所以这里我遍搜集并整理了此新版本的 photoshop 安装使用教程,后续也将提供 AI 插件的下载安装教程 安装文件下载 …...
![](https://img-blog.csdnimg.cn/2db4c3283bac4a47a2938603f5ebdcaa.png#pic_center)
Redis单线程还是多线程?IO多路复用原理
目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、Redis6.0引入多线程四、Redis主线程和IO线程是如何完成请求的?1、服务端和客户端建立socket连接2、IO线程读取并解析请求3、主线程执行请求命令4、IO线程会写回socket和主线程清…...
![](https://img-blog.csdnimg.cn/img_convert/68b2b3c1100f907df2e15fa80dffcc51.png)
小菜鸟Python历险记:(第五集)
今天写的文章是记录我从零开始学习Python的全过程。在Python中对方法进行备注的时候,往往都是写在方法中的第一行所在位置。在书写注释以后,在调用方法的时候,鼠标点击方法会有一个浮动的提示显示备注内容。具体如下图所示:注释的…...
![](https://img-blog.csdnimg.cn/ea1c4bd5942c45cfa6b2d23b5a6e108b.png)
【思维模型】五分钟了解<复利思维>,为何学习复利思维?什么是复利思维?如何应用复利思维?
【思维模型】五分钟了解<复利思维>,为何学习复利思维?什么是复利思维?如何应用复利思维?1. 为何学习复利思维?2. 什么是复利思维?3. 如何应用复利思维?4. 小结参考&#…...
![](https://www.ngui.cc/images/no-images.jpg)
Vue.js语法详解:从入门到精通
Vue.js是一个流行的JavaScript框架,用于构建用户界面。它的核心特性包括数据双向绑定、组件化架构、虚拟DOM和响应式系统等。在本文中,我们将深入探讨Vue.js的语法,帮助读者更好地理解和应用Vue.js。1.模板语法Vue.js的模板语法采用了类似HTM…...
![](https://www.ngui.cc/images/no-images.jpg)
程序员的代码行数越少越好?
有些人可能会认为,应用程序中的代码行越少,就越容易阅读。这句话只有部分正确,我认为代码可读性的度量标准包括:代码应具备一致性代码应具备自我描述性代码应具备良好的文档代码应使用稳定的现代功能代码不应过于复杂代码的性能不…...
![](https://www.ngui.cc/images/no-images.jpg)
【每日一题Day156】LC1032字符流 | 字典树
字符流【LC1032】 设计一个算法:接收一个字符流,并检查这些字符的后缀是否是字符串数组 words 中的一个字符串。 例如,words ["abc", "xyz"] 且字符流中逐个依次加入 4 个字符 a、x、y 和 z ,你所设计的算法…...
![](https://img-blog.csdnimg.cn/c863f17882514790a0939b6441e131a5.png)
V2G模式下含分布式能源网优化运行研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 📋📋📋本文目录如下:🎁🎁🎁 目录 💥1 概述 📚2 运行结果 &am…...
![](https://img-blog.csdnimg.cn/ee08289ffcff4eb09eea40e4d0bf4147.jpeg#pic_center)
手写一个简单的RPC框架
学习RPC框架,由繁化简,了解其本质原理 文章目录项目简介什么是RPC?项目模块项目代码common模块client模块server模块framework模块测试项目简介 什么是RPC? RPC(Remote Procedure Call)即远程过程调用&am…...
![](https://img-blog.csdnimg.cn/img_convert/90ea963cfd2d9b60b1eefa840f653db5.gif)
【剑指offer】旋转数组的最小数字
👑专栏内容:剑指offer⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录一、题目描述1、题目2、示例示例1示例2二、题目分析1、暴力法2、二分法三、代码汇总1、暴力法2、二分法一、题目描述 1、题…...
![](https://img-blog.csdnimg.cn/b9614dc9ed254922b18f385f2e30f473.png)
【Dorker】Portainer轻量级可视化工具
文章目录Portainer简介登录Portainer第一次登录需创建admin,访问地址:xxx.xxx.xxx.xxx:9000选择local选项卡后本地docker详细信息展示安装nginx私有镜像仓库管理Portainer简介 Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板…...
![](https://www.ngui.cc/images/no-images.jpg)
基于 vue.js 进行组件封装的方案
摘要:本文将介绍如何基于 vue.js 进行组件封装的方案。我们将从分析组件封装的优势开始,然后依次介绍 vue.js 的基本概念,以及如何创建、封装和使用自定义组件。最后,我们将通过一个实际的示例,演示如何实现一个基于 v…...
![](https://img-blog.csdnimg.cn/504cdbb1fdf84667a26b96492db49870.png)
【Unityc#专题篇】之c#基础篇
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:uni…...
![](https://img-blog.csdnimg.cn/img_convert/845fa9bd09c5354fd05ec224a505c5cf.png)
Python(白银时代)——模块、包、异常
异常 概念 程序运行时,如果Python 解释器遇到了错误,会停止程序运行,并且提示错误信息,这就是异常 程序停止执行并提示错误信息的动作,称为 抛出异常 异常捕获 try: 里面的代码,不确定是否能够正常执行. …...
![](https://www.ngui.cc/images/no-images.jpg)
小程序和Vue写法的区别
小程序和Vue写法的区别主要有以下几点: 语法不同:小程序使用的是WXML、WXSS和JS,而Vue使用的是HTML、CSS和JSX。 数据绑定方式不同:小程序使用的是双向数据绑定,而Vue使用的是单向数据流。 1)在小程序中需…...
![](https://www.ngui.cc/images/no-images.jpg)
如何实现分布式锁
一、锁的作用 锁是为了解决多线程情况下,对于共享资源的访问安全问题。 但是当系统是分布式的时候,本地锁已经没法锁住所需要的资源,因为本地获取了锁,其他系统无法得知本地锁的情况。 分布式锁,是独立于系统的第一方…...
![](https://img-blog.csdnimg.cn/20210607205838704.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ2MTEwNTU2,size_16,color_FFFFFF,t_70)
使用VS2019连接Microsoft SQL Server Compact 4.0数据库
简介 SQL Server Compact Edition是微软推出的一个适用于嵌入到移动应用的精简数据库产品,Windows Mobile开发人员能够使用SQL Server CE开发出将数据管理能力延展到Window Mobile移动设备上的应用程序。虽然SQL Server CE占用的磁盘空间只有3到5兆左右,…...
![](https://www.ngui.cc/images/no-images.jpg)
Vue2 和 Vue3 的对比
Vue2 vs Vue3 Vue 是一款流行的 JavaScript 框架,用于构建交互式 Web 界面。Vue2 和 Vue3 是 Vue.js 的两个版本。Vue3 是 Vue.js 的最新版本,于 2020 年 9 月正式发布。Vue3 有许多改进和新功能,下面我们将对 Vue2 和 Vue3 进行比较。 性能…...
![](https://img-blog.csdnimg.cn/107f5c68c23f4bfe8fc428daf0b56563.png)
[数据结构]二叉树的链式存储结构
目录 二叉树的链式存储结构:: 1.创建一颗二叉树 2.二叉搜索树简介 3.前序、中序以及后序遍历 4.层序遍历 5.求一棵树的节点个数代码实现 6.求一棵树的高度代码实现 7.求叶子节点个数代码实现 8.求第K层节点个数代码实现 9.二叉树查找值为x的节点 二叉树…...
![](https://img-blog.csdnimg.cn/9ccbbd628f7041b899aa3ea35bc69b09.png)
黑马程序员 Redis 踩坑及解决
文章目录实战篇p30 短信登录-隐藏用户敏感信息p50 优惠券秒杀-添加优惠券p69 秒杀优化-异步秒杀思路p81 达人探店-点赞排行榜p87 好友关注-实现滚动分页查询问题 1问题 2p90 附近商铺-实现附近商户功能实战篇 p30 短信登录-隐藏用户敏感信息 问题描述:登录后会跳转…...
![](https://www.ngui.cc/images/no-images.jpg)
Matlab实现粒子群算法
粒子群算法(Particle Swarm Optimization,PSO)是一种群体智能算法,通过模拟自然界中鸟群、鱼群等生物群体的行为,来解决优化问题。 在PSO算法中,每个个体被称为粒子,每个粒子的位置表示解空间中…...
![](https://www.ngui.cc/images/no-images.jpg)
tailwindcss 写原生html
需要注意:html文件中引入的是output.css input.css写那三行预留的就可以了打包的时候只要打包html output.css img文件夹句ok,其他都不用原理是运行时生产output.css文件,直接【注意!注意!注意!class"…...
![](https://img-blog.csdnimg.cn/img_convert/7e5c52a16f1b6ede0a89da0edf8b7f38.png)
Java开发一年不到,来面试居然敢开口要20K,面完连8K都不想给~
前言 我的好朋友兼大学同学老伍家庭经济情况不错,毕业之后没两年自己存了点钱加上家里的支持,自己在杭州开了一家网络公司。由于公司不是很大所以公司大部分的开发人员都是自己面试的,近期公司发展的不错,打算扩招也面试了不少人…...
![](https://img-blog.csdnimg.cn/7e8e3bede8ea4d7686b845490d786308.png)
LeetCode题解 20(17,79) 电话号码的字母组合,单词搜索<回溯>
文章目录电话号码的字母组合(17)代码解答单词搜索(79)代码解答电话号码的字母组合(17) 思路: 根据题意我们必须根据数字获取对应的字符数组,因此我们先定义1个字符数组表示这个电话表 private String[] letters {"","","abc","…...
![](https://img-blog.csdnimg.cn/img_convert/2abf317ec0ff441d5dec81ed33e07a02.png)
路径之谜 蓝桥杯 89
题目描述小明冒充 X 星球的骑士,进入了一个奇怪的城堡。城堡里边什么都没有,只有方形石头铺成的地面。假设城堡地面是 nn 个方格。如下图所示。按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但不能斜着走,也不…...
![](https://www.ngui.cc/images/no-images.jpg)
Mysql数据库如何调优
MYSQL数据库调优 索引 1、对于常用的查询字段加索引,但如果常用字段只有几个常量值就不需要加索引,或者使用索引会失效的情况; 2、索引失效的情况: 1、索引列使用函数,计算(加减乘除等) …...
![](https://img-blog.csdnimg.cn/74fded600ae143ac977ddf2b41629bf6.png)
CAN(FD)记录仪在新能源汽车整车控制器(VCU)、电池管理系统(BMS)、电机控制器(MCU)、发动机ECU中的应用,免去出差烦恼
今天介绍CAN(FD)记录仪在新能源汽车整车控制器(VCU)、电池管理系统(BMS)、电机控制器(MCU)、发动机ECU中的应用 第一步:新能源汽车整车控制器(VCU)先供上电,…...
![](/images/no-images.jpg)
怎么自建设部网站查询公司资质/公司网站制作需要多少钱
构建之法读后疑问: 初步的完成构建程序设计思路之后实现过程中发现了问题或者可以优化的地方是立马就改进还是完成之后按照步骤统一进行优化。覆盖性测试,针对一些永远用不到只是用来预防极为极端的情况下,例如内存不足等,非常难以…...
![](https://img-blog.csdnimg.cn/915e2922bbd14ee58ac195b4f4b3d251.png)
html5响应式手机网站/百度官网入口
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] …...
![](/images/no-images.jpg)
中国体育直播在线观看斯诺克赛/西安seo网站关键词
AngularJS 1.2版本中提供了Controller As语法,简单说就是可以在Controller中使用this来替代$scope,使得Controller更像一个传统的JS类,相对于$scope的继承树要理解上要简单一些。 基础用法 传统的Controller是这样写的: app.contr…...
![](/images/no-images.jpg)
导入表格数据做地图网站/网站推广哪家好
---------------------------------------------------------------------------------------- 转载于:https://www.cnblogs.com/xioxu/archive/2008/09/23/1297518.html...
![](/images/no-images.jpg)
手机网站建设是什么/百度一下你就知道手机版官网
本文主要总结线程共享数据的相关知识,主要包括两方面:一是某个线程内如何共享数据,保证各个线程的数据不交叉;一是多个线程间如何共享数据,保证数据的一致性。线程范围内共享数据自己实现的话,是定义一个Map,线程为键&…...
![](http://upload-images.jianshu.io/upload_images/2085791-459dc9b052f3c62d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
成都品牌包装设计/企业网站优化哪家好
2019独角兽企业重金招聘Python工程师标准>>> 方法1 - 使用Eclipse Eclipse里新建一个服务器: 服务器类型选择SAP Cloud Platform: 点Finish,成功创建了一个Server: Eclipse里选择要部署的项目,右键->…...