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列表中)使用多条语句,则可以用大括号将这多条语句括起来构造一个语句块。

总结:

功能符号

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

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

命令替换反引号、$()

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

变量替换${}

数组初始化()

条件测试[ ]

字符串比较[[ ]]

括起一个语句块{ }

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

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

  1. Linux之(5)账户和shell基础知识

    Linux之(5)账户和shell基础知识 Author:onceday date:2022年8月23日 漫漫长路,而今才刚刚开始- 本内容主要收集整理于: <Linux命令行与shell脚本编 ...

  2. linux 字符串加入中括号,Shell 中的中括号用法总结

    Shell 里面的中括号(包括单中括号与双中括号)可用于一些条件的测试: 算术比较, 比如一个变量是否为0, [ $var -eq 0 ]. 文件属性测试,比如一个文件是否存在,[ -e $var ] ...

  3. Linux学习第五天——shell 基础及变量

    shall的作用和地位: shall的作用:shall作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上 shall在Linux系 ...

  4. linux 字符串加入中括号,方括号及其在命令行中的不同用法介绍

    通配 方括号最简单的用法就是通配.你可能在知道"Globbing"这个概念之前就已经通过通配来匹配内容了,列出具有相同特征的多个文件就是一个很常见的场景,例如列出所有 JPEG 文 ...

  5. linux获取中括号内容,shell里使用正则表达式提取括号中的内容

    遇到个websphere MQ监控的问题,希望通过命令行的方式获取到MQ的一些状态: 1. su - mqm 使用mqm用户 2. dspmq 最简单的命令,查看队列控制器的状态: $ dspmq - ...

  6. linux字符串转为二进制,Linux printf将十进制转换为二进制?

    不,C printf 没有二进制格式的格式修饰符( http://www.cplusplus.com/reference/cstdio/printf/ ),以及linux util 也没有扩展它 %b ...

  7. linux字符串排序文件,Linux awk+uniq+sort 统计文件中某字符串出现次数并排序

    https://blog.csdn.net/qq_28766327/article/details/78069989 在服务器开发中,我们经常会写入大量的日志文件.有时候我们需要对这些日志文件进行统计 ...

  8. linux 字符串时间转换,Linux C/C++时间字符串与time_t之间的转换方法(转)

    js 获取小数点位数方法及 字符串与数字之间相互转换方法 1.获取小数点位数方法 a. 使用 js 中 subsrting,indexOf,parseFloat三个函数,代码如下: var s = & ...

  9. 随手记——Linux中C语言调用shell指令的三种方式

    在学习资料满天飞的大环境下,知识变得非常零散,体系化的知识并不多,这就导致很多人每天都努力学习到感动自己,最终却收效甚微,甚至放弃学习.我的使命就是过滤掉大量的无效信息,将知识体系化,以短平快的方式直 ...

最新文章

  1. python怎么输入代码-python中如何设置代码自动提示
  2. Xshell相关优化
  3. JS难点剖析-原型原型链
  4. 经济学与计算机科学结合,理论计算机在物理学和经济学领域的重要作用
  5. net 控制台 定时_.NET Core实现基于Quart.Net的任务管理
  6. 自己常用的wireshark过滤条件
  7. IE浏览器不能上网的处理办法
  8. A+B in Hogwarts (20)
  9. 转发网络《iOS网络编程与云端应用最佳实践》微博转发送书了
  10. 5.应用测试 5.1测试Spring MVC的控制器
  11. 无痕埋点(声明式)(原创)
  12. 【工具推荐】下载你在博客园的文章原稿
  13. python win32com 字体选择_用python的win32com模块替换word中的文字搞定批量打印奖状...
  14. Win10注册.bat或.exe成为系统服务(NSSM)
  15. 浅谈游戏《武士刀:零》——赛博朋克风格城市中的刀光剑影
  16. think in java interview-高级开发人员面试宝典(十)
  17. DFM文件以及写该文章的原因等等
  18. Java面试八股文整理
  19. 2020湖南省技能竞赛获奖名单_雄安新区网络安全技能竞赛举办!9人获奖!
  20. OpenSSL环境搭建(WIN10+VS2017)

热门文章

  1. 在C#中使用SQLite
  2. ASP.NET 應用程式的安全性模型
  3. [ZT]C#的多线程机制探索(2)
  4. AspNetCoreRateLimit - ASP.NET Core 速率限制中间件。
  5. 完美:C# Blazor中显示Markdown并添加代码高亮
  6. WTMPlus 1.4 Uniapp来了
  7. C#中的命名空间和程序集
  8. .NET 6新特性试用 | 热重载
  9. 暴库也不怕!EF Core加密存储数据
  10. 我从大厂面试中学到的关于 C# 的知识