Linux Shell脚本攻略

news2024/10/6 10:35:53

一、echo命令

1、在echo中转义换行符

默认情况下,echo会在输出文本的尾部追加一个换行符。可以使用选项-n来禁止这种行为。 echo同样接受双包含转义序列的双引号字符串作为参数。在使用转义序列时,需要使用echo -e "包含转义序列的字符串"这种形式

 

转义序列:

ANSI 转义序列是一种用于控制终端输出的色彩、样式、光标位置以及控制终端行为的特殊字节. 它的使用方式就是通过 stdout 在字符串、字节中向外输出**Control当终端支持此转义序列的功能时, 就会呈现出相应的效果. 此功能常常用于终端的彩色输出、构建 Text User Interface 应用等。(例如:换行符\n  , 制表符\t  , 彩色文本 \e[1;色彩码m 文本内容 \e[0m )

2、打印彩色输出

脚本可以使用转义序列在终端中生成彩色文本。

文本颜色是由对应的色彩码来描述的。其中包括:重置=0,黑色=30,红色=31,绿色=32, 黄色=33,蓝色=34,洋红=35,青色=36,白色=37。

  要打印彩色文本,可输入如下命令:

 其中\e[1;31m是一个转义字符串,可以将颜色设为红色,\e[0m将颜色重新置回。只需要将31替 换成想要的色彩码就可以了。

对于彩色背景,经常使用的颜色码是:重置=0,黑色=40,红色=41,绿色=42,黄色=43, 蓝色=44,洋红=45,青色=46,白色=47。

二、使用shell进行数学运算
Bash shell使用let、(( ))和[]执行基本的算术操作。工具expr和bc可以用来执行高级操作。

实战演练

(1) 可以像为变量分配字符串值那样为其分配数值。这些值会被相应的操作符视为数字。

       #!/bin/bash
       no1=4;
       no2=5;

1.5 使用 shell 进行数学运算 13
(2) let命令可以直接执行基本的算术操作。当使用let时,变量名之前不需要再添加$,例如:

   let result=no1+no2
   echo $result

let命令的其他用法如下:

 自加操作
$ let no1++

1 2 3

 自减操作
$ let no1-- 4

 简写形式 let no+=6

let no-=6

它们分别等同于let no=no+6和let no=no-6。  其他方法

5 6 7 8

10 11 12 14

操作符[]的使用方法和let命令一样:
result=$[ no1 + no2 ]
在[]中也可以使用$前缀,例如:
result=$[ $no1 + 5 ] 也可以使用操作符(())。出现在(())中的变量名之前需要加上$:
result=$(( no1 + 50 )) 9 expr同样可以用于基本算术操作:

      result=`expr 3 + 4`
      result=$(expr $no1 + 5)
   以上这些方法不支持浮点数,只能用于整数运算。

(3) bc是一个用于数学运算的高级实用工具,这个精密的计算器包含了大量的选项。我们可 以借助它执行浮点数运算并使用一些高级函数:

   echo "4 * 0.56" | bc
   2.24
   no=54;
   result=`echo "$no * 1.5" | bc`
   echo $result

 bc可以接受操作控制前缀。这些前缀之间使用分号分隔。

 设定小数精度。在下面的例子中,参数scale=2将小数位个数设置为2。因此,bc将 会输出包含两个小数位的数值:

           echo "scale=2;22/7" | bc
           3.14

 进制转换。用bc可以将一种进制系统转换为另一种。来看看下面的代码是如何在十进 制与二进制之间相互转换的:

#!/bin/bash

用途:数字转换

           no=100
           echo "obase=2;$no" | bc
           1100100
           no=1100100
           echo "obase=10;ibase=2;$no" | bc
           100

 计算平方以及平方根。
echo "sqrt(100)" | bc #Square root

           echo "10^10" | bc #Square

 

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

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

相关文章

有哪些测试框架和工具推荐? - 易智编译EaseEditing

在软件测试领域,有许多测试框架和工具可供选择。以下是一些常见的测试框架和工具的推荐: Selenium: 一个用于自动化Web应用程序测试的流行框架。它支持多种编程语言,并提供丰富的功能和灵活性。 JUnit: 一个用于Java应用程序的单元测试框架…

MongoDB(学习笔记1.0)

最近在学非关系型数据库MongoDB,猛地用起来的真的没关系型数据库方便啊。 首先还是数据库的安装: 安装直接去官网安装即可,官网地址:MongoDB: The Developer Data Platform | MongoDB 当前也有免安装版的,这里就不再…

毕业三年,自学软件测试到就业,我用了4个月

我转行的经历 17年毕业,普通专科,通信专业。 当初选择这个专业是因为有一个校企合作,承诺学生毕业之后给学生安排就业,在学校里面混了三年之后,学校也是履行了当初安排就业的承诺,给我“发配”到了上海&a…

chatgpt赋能python:Python同一行输入

Python同一行输入 在Python编程中,你可能需要在同一行中输入多个命令或语句。这可以通过使用分号来实现。 在本文中,我们将介绍如何在Python中使用同一行输入,并探讨其优缺点。 使用分号实现同一行输入 在Python中,分号&#x…

地震勘探基础(九)之地震速度分析

速度分析 在地震资料数字处理中,速度分析是动校正和水平叠加和地震偏移的基础。 在水平界面情况下,共中心点时距曲线方程是一条双曲线。在共中心点时距曲线中,炮检距 x x x 和时间 t 0 t_0 t0​ 都是已知的,只有速度 v v v 是…

30天从入门到精通TensorFlow1.x 第五天,跨计算设备执行计算图-cpu

一、接前一天 前天学习了,数据流图,今天尝试在不同设备上(cpu或者gpu)来执行计算图。 本次使用cpu来执行,但是不涉及gpu。gpu放在后面学习,这里比较重要。 二、示例 1. 先看看自己的设备 from tensorfl…

My Note of Diffusion Models

Diffusion Models Links: https://theaisummer.com/diffusion-models/ Markovian Hierachical VAE rvs: data: x 0 x_{0} x0​,representation: x T x_{T} xT​ ( p ( x 0 , x 1 , ⋯ , x T ) , q ( x 1 , ⋯ , x T ∣ x 0 ) ) (p(x_0,x_1,\cdots,x_T),q(x_1,\cdots,x_{T…

AcWing 回转游戏 dfs IDA* 剪枝 统一操作 java

🍑 算法题解专栏 🍑 回转游戏 如下图所示,有一个 # 形的棋盘,上面有 1 , 2 , 3 1,2,3 1,2,3 三种数字各 8 8 8 个。 给定 8 8 8 种操作,分别为图中的 A s i m H A \\sim H AsimH。 这些操作会按照图中字母和箭头…

ChatGPT会取代低代码开发平台吗?

编程作为一种高端技能,向来是高收入高科技的代名词。近期,伴随着ChatGPT在全球的爆火,过去通过窗口“拖拉拽”的所见即所得方式的低代码开发模式,在更加智能和更低成本的AI搅局之下,又面临了更深层次的影响。 低代码平…

MySQL redo log、undo log、binlog

MySQL是一个广泛使用的关系型数据库管理系统,它通过一系列的日志来保证数据的一致性和持久性。在MySQL中,有三个重要的日志组件,它们分别是redo log(重做日志)、undo log(回滚日志)和binlog&…

MyBatis深入学习总结

MyBatis总结 MyBatis入门操作 简介 原始jdbc操作(查询数据) 原始jdbc操作(插入数据) 原始jdbc操作的分析 原始jdbbc开发存在的问题如下: 数据库连接创建、释放频繁造成系统资源的浪费从而影响系统性能sql语句在代…

深度学习基础知识-tf.keras实例:衣物图像多分类分类器

参考书籍:《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition (Aurelien Geron [Gron, Aurlien])》 本次使用的数据集是tf.keras.datasets.fashion_mnist,里面包含6w张图,涵盖10个分类。 import tensorflo…

Linux中的ACL以及加固

ACL访问控制 // ACL:Access Control List 访问控制列表 // -p :以原始格式显示 ACL [rootzbx ~]# getfacl -p /root/ // 查看ACL策略 # file: /root/ # owner: root # group: root user::r-x group::r-x other::--- 设置ACL策略 // -m : 修改文件的ACL // -b : 表示删除所有的…

RedisGraph的图存储模型

1 overview 在RedisGraph的整体架构中,非常简略的概括了RedisGraph的图存储模型: RedisGraph使用DataBlock来存储node和edge的属性。RedisGraph使用稀疏矩阵来表示图,稀疏矩阵的存储格式为按行压缩的稀疏矩阵(Compressed Sparse…

同浏览器下多窗口进行跨源通信、同源通信

同浏览器下多窗口进行跨源通信、同源通信 多页面通信运用到了“发布订阅”的设计模式,一个页面发布指令,其他页面进行订阅并进行相应的行为操作! 一、跨源通信 window.postMessage() window.postMessage() 方法可以安全地实现跨源通信。通常…

Qt6之调用Windows下vc生成的动态链接库dll

Qt是跨平台工具,显然能和windows的动态库一起使用。 在Windows操作系统上,库以文件的形式存在,并且可以分为动态链接库(DLL) 和静态链接库两种。动态链接库文控以.dll为后缀名,静态链接库文控以.lib为后缀名。不管是动态链接库还是…

独立站卖家如何应对PayPal风险?3大策略教你安全收款!

PayPal是全球风险控制做得最好的第三方在线支付平台,PayPal付款是钱直接到卖家PayPal账户。但随着外贸交易的日益发展,恶意买家的问题也越来越多。如何防范风险,保证收款安全,成为独立站卖家们所关注的问题。下面为大家分享三种策…

背包DP-入门篇

目录 01背包: 完全背包: 多重背包: 分组背包: 01背包: [NOIP2005 普及组] 采药 - 洛谷https://www.luogu.com.cn/problem/P1048 01背包背景 在一个小山上,有个n个黄金和一个容量为w的背包,…

【Python】深度理解Class类、Object类、Type元类的概念和关系

深度理解Class类、Object类、Type元类 1.Class类、Object类、Type元类的表面关系2.Class、Object、Type解释3.关系详解4.那么如何看待object、type在Python面对对象概念中的一席之地呢?5.那么object、type扮演了什么样的角色呢?他们对class又分别做了什么…

【计算机组成】Cache与CPU的直接映射、全相联映射与组相联映射

一.Cache与CPU需要映射的原因 CPU准备访问内存时,会先问问cache存储器有没有已经提前准备好了数据,如果没有则再找内存要: 如果Cache刚好命中,则直接从Cache中读取数据: 如果Cache没有命中(Cache失效&#…