linux 字符串加入中括号,Linux Shell 基础 -- 总结几种括号、引号的用法

1、双引号 " "

双引号常用于包含一组字符串,在双引号中,除了 "$"、""、" ` (反引号)"有特殊含义外,其余字符(如IFS、换行符、回车符等)没有特殊含义。

$ a=3

$ echo "$a"

输出结果为 3,在双引号中 $ 符仍有特殊含义。

2、单引号 ' '

单引号的功能与双引号类似,不过单引号中的所有字符都没有特殊含义:

$ a=3

$ echo '$a'

输出结果为 $a,可见在单引号中 $ 符是不起作用的。

3、反引号

反引号的功能是命令替换,在反引号 中的内容通常是命令行,程序会优先执行反引号中的内容,并使用运行结果替换掉反引号处的内容。举个例子:

$ echo `date`

这行命令会先执行反引号中的命令 date,然后用 echo 命令打印出 date 命令的结果(与直接使用 date 命令效果一样)。再举个例子:

#!/bin/bash

a=3

b=5

c=`expr $a \* $b`

echo $c

exit 0

4、$ + 小括号 $( )

$(...) 的作用与反引号一样,也是命令替换:

#!/bin/bash

for file in $(ls /)

do

echo $file

done

exit 0

5、$ + 双小括号 $(( ))

$(( )) 的功能是进行算术运算,括号中的内容为数学表达式,使用 $(( )) 可以求数学表达式的值:

#!/bin/bash

a=3

b=5

c=$(($a * $b))

echo $c

exit 0

上述脚本的输出结果为 15。

使用 $(( )) 进行数学运算时,不需要担心乘号( * )等运算符被 shell 误解为其他含义,因为它们都在括号内。

6、$ + 中括号 $[ ]

$[ ] 的功能与 $(( )) 一样,都是用于算术运算。

7、$ + 大括号 ${ }

${ } 的功能是变量替换,类似于 $ 符,但是 ${ } 比 $ 的替换范围更精准:

#!/bin/bash

a=3

b=5

echo $ab

echo ${a}b

exit 0

这段脚本,第一次输出 $ab 的时候,会把 ab 视作一个变量,然后打印 ab 的值,显然为空;第二次使用 ${a}b,则会先输出 a 的值然后再向 STDOUT 打印一个字符 b。

8、小括号 ( )

小括号可以用来定义一个数组变量,如下:

array1=(1 2 3 4 5)            // 在 shell 中定义一个数组变量

array2=(one two three four five)

取数组元素的值也是使用 $ 符号,如下:

$ echo $array1

$ 1

$ echo ${array1[2]} # 取数组中的一个元素,索引用方括号括起来,和大部分语言一样,数组的索引是从 0 开始的

$ 3

$ echo ${array2[0]}

$ one

$ echo ${array2[*]} # 输出整个数组

$ one two three four five

这里使用了 ${ } 表达式,进行变量替换。

注意:在 shell 中使用数组变量有时会引起一些问题,而且数组变量的可移植性并不好,因此在 shell 编程中,数组变量使用得并不多。

9、双小括号 (( ))

双小括号命令允许在比较过程中使用高级数学表达式:

(( expression ))

其中,expression 可以是任意的数学赋值或表达式。相比 test 命令只能在比较中使用简单的算术操作,双小括号命令提供了更多的数学符号,可以在双小括号中进行各种逻辑运算、数学运算,也支持更多的运算符(如 ++、-- 等)。

常使用的双小括号来在 for 循环中实现 C 语言风格的迭代:

#!/bin/bash

for ((i = 0; i < 10; i++))

do

echo -n "$i "

done

echo ""

exit 0

10、中括号 [ ]

单个的中括号的功能与 test 命令一样,都是用作条件测试。

#!/bin/bash

read -p "please enter a number: " num

if [ $num -gt 10 ]; then

echo "num > 10"

else

echo "num <= 10"

fi

11、双中括号 [[ ]]

双中括号提供了针对字符串比较的高级特性,使用双中括号 [[ ]] 进行字符串比较时,可以把右边的项看做一个模式,故而可以在 [[ ]] 中使用正则表达式:

#!/bin/bash

if [[ hello == hell* ]]; then

echo "equal"

else

echo "unequal"

fi

exit 0

12、大括号 { }

大括号用于括起一个语句块。如果需要在某些只能使用单个语句的地方(如AND、OR列表中)使用多条语句,则可以用大括号将这多条语句括起来构造一个语句块。

总结:

功能符号

引字符串,字符串中部分特殊符号有意义双引号 " "

引用字符串,字符串中特殊符号全都没有意义单引号 ' '

命令替换反引号、$()

算术运算$(( ))、$[ ]、(( ))

变量替换${}

数组初始化()

条件测试[ ]

字符串比较[[ ]]

括起一个语句块{ }

注意:本文归作者所有,未经作者允许,不得转载

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

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

相关文章

设计模式相关

多例模式 转载于:https://www.cnblogs.com/our880tom/p/6392983.html

一个countDown在多线程调度下使用不当的分享

2019独角兽企业重金招聘Python工程师标准>>> 一个countDown在多线程调度下使用不当的分享 1. 诡异的数据抖动 在一个需求开发过程中&#xff0c;由于有多角色需要获取每个角色下的菜单&#xff1b;结果出现了单角色下拉去菜单没问题&#xff0c;多角色情况下只有一个…

我坚持三年了!

阅读本文大概需要5分钟。不知不觉&#xff0c;公众号写作已经持续了3年了。2019年11月底&#xff0c;心血来潮写了第一篇文章&#xff0c;更多是为了复盘过去的一些工作经历。在前几天&#xff0c;读者数突破了16万&#xff0c;虽然这个数字相比那些头部大号而言并不多&#xf…

关于Qt模态框总汇

转载请注明出处&#xff1a;http://www.cnblogs.com/dachen408/p/7285710.html 父窗体为QMainWindow&#xff1b; 当子窗体为&#xff1a; 1.QWidget&#xff0c;需要设置 this->setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog); this->setWindowModality(Qt::Win…

linux脚本打印循环次数,shell脚本编程基础(3)——循环用法

本节索引&#xff1a;一、if、case条件判断二、for、while及until循环三、循环控制语句continue、break、shift及select菜单四、信号捕捉trap在前面的基础编程内容中&#xff0c;我们已经学习了shell脚本的顺序执行及选择执行&#xff0c;通过这两种方式&#xff0c;可以帮我们…

RTSP服务器之————rtsp-server(轻量级RTSP / RTP流媒体服务器)

github&#xff1a;https://github.com/revmischa/rtsp-server 轻量级RTSP / RTP流媒体服务器

EF CORE 7 中的新功能:使用 ExecuteDelete 和 ExecuteUpdate 进行批量操作

原文链接&#xff1a;https://timdeschryver.dev/blog/new-in-entity-framework-7-bulk-operations-with-executedelete-and-executeupdate原文作者&#xff1a;tim_deschryver翻译&#xff1a;沙漠尽头的狼(谷歌翻译加持)Entity Framework 7 包括一些已被要求的流行功能&#…

java 简单json和对象相互转换

2019独角兽企业重金招聘Python工程师标准>>> package Fasterxml; import com.fasterxml.jackson.databind.ObjectMapper; import mode.User; import java.io.StringWriter; import java.util.ArrayList; import java.util.List;/*** maven...**<dependency>* …

畅想动画制作的乐趣

为什么要制作动画&#xff1f; 现在的营销活动&#xff0c;用一个很简单的图片去吸引消费者已经远远不够。想让消费者创造GMV&#xff0c;肯定需要让消费者觉得眼前一亮或是有视觉冲击的东西&#xff0c;或者在动画过程中提供更好的引导部分&#xff0c;比如红包&#xff0c;引…

Linux的scan命令,linux的scan命令

linux下scan命令主要是以scanf的形式使用转换符解析字符串&#xff0c;下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux下scan命令的相关知识&#xff0c;希望对大家有帮助!linux的scan命令详解scan - 以sscanf的形式使用转换符解析字符串语法:scan string format ?varna…

Spring Cloud Gateway 原生支持接口限流该怎么玩

关于pig&#xff1a; 基于Spring Cloud、oAuth2.0开发基于Vue前后分离的开发平台&#xff0c;支持账号、短信、SSO等多种登录&#xff0c;提供配套视频开发教程。 关于 Spring Cloud Gateway SpringCloudGateway是Spring官方基于Spring 5.0&#xff0c;Spring Boot 2.0和Projec…

我的手机 不支持箭头函数

不支持&#xff0c;要换成function的形式 转载于:https://www.cnblogs.com/web-fusheng/p/7295901.html

中标麒麟linux卸载qt,国产化 银河麒麟编译Qt程序的问题汇总 | 阿拉灯

Run in terminal莫名奇妙软件无法在QtCreator中运行或者调试&#xff0c;main函数都无法进入&#xff0c;QtCreator中一运行就崩溃&#xff0c;并跳到汇编界面&#xff0c;这多半和代码没什么关系&#xff0c;我这里是将项目->运行中的“Run in terminal”去掉勾选&#xff…

css3-13 如何改变文本框的轮廓颜色

css3-13 如何改变文本框的轮廓颜色 一、总结 一句话总结&#xff1a;outline使用和border很像&#xff0c;几乎一模一样&#xff0c;多了一个offset属性 1、轮廓outline如何使用&#xff1f; 使用和border很像&#xff0c;几乎一模一样&#xff0c;多了一个offset属性 18 …

ios添加设备真机测试,以及Undefined symbols for architecture x86_64:''错误

问题今天坑了好久&#xff0c;然后找了各种资料 添加设备这个直接去开发者中心添加一个设备进去就好&#xff0c;具体流程百度&#xff0c;第二个问题是属于路径不对或者是静态库没有添加成功&#xff0c;项目可以看到&#xff0c;到时路径找不到&#xff0c;你把静态库拖到桌面…

linux NF NR实例,awk内建变量示例详解之NR、FNR、NF

NR表示从awk开始执行后&#xff0c;按照记录分隔符读取的数据次数&#xff0c;默认的记录分隔符为换行符&#xff0c;因此默认的就是读取的数据行数&#xff0c;NR可以理解为Number of Record的缩写。在awk处理多个输入文件的时候&#xff0c;在处理完第一个文件后&#xff0c;…

迷宫探索

/* 5 4 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 4 3 */#include<iostream>using namespace std;struct node {int x;//横坐标int y;//纵坐标int f;//父亲在队列中的编号int s;//步数 };int main() {node que[2051];int a[51][51]{0};int book[51][51]{0};//定义一…

Kinect2.0获取数据

最近事情真是多&#xff0c;今天抽空研究一下Kinec2.0的数据获取&#xff01; 系统要求 https://developer.microsoft.com/en-us/windows/kinect/hardware-setup 系统环境 联想Y430P&#xff0c;Windows10 首先安装了Kinect for Windows SDK &#xff08;KinectSDK-v2.0_1409-S…

linux超级工具,linux运维超级工具--sysdig

sysdig 是一个超级系统工具,它可以用来捕获系统状态信息&#xff0c;在运维工作中sysdig能很方便的排查异常、定位故障&#xff0c;它还能保存数据进行分析&#xff0c;并且提供强大的命令接口。在了解sysdig强大之处之前,首先得安装sysdig&#xff0c;我这里是环境是centos6.7…

《sql语句练习1》

Oracle系列《一》&#xff1a;简单SQL与单行函数 使用scott/tiger用户下的emp表和dept表完成下列练习&#xff0c;表的结构说明如下 emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号) dept部门表(deptno部门编号…