linux bash shell中,单引号、 双引号,反引号(``)的区别及各种括号的区别

一、单引号和双引号

首先,单引号和双引号,都是为了解决中间有空格的问题。

因为空格在Linux中时作为一个很典型的分隔符,比如string1=this is astring,这样执行就会报错。为了避免这个问题,因此就产生了单引号和双引号。他们的区别在于,单引号将剥夺其中的所有字符的特殊含义,而双引号中的‘$‘(参数替换)和‘`‘(命令替换)是例外。所以,两者基本上没有什么区别,除非在内容中遇到了参数替换符$和命令替换符`。

所以下面的结果:
num=3
echo ‘$num’
$num
echo “$num”
3
所以,如果需要在双引号””里面使用这两种符号,需要用反斜杠转义。

二、反引号``

这个东西的用法,我百度了一下,和$()是一样的。在执行一条命令时,会先将其中的 ``,或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行,例如:
echo `ls`
会先执行 ls 得到xx.sh等,再替换原命令为:
echo xx.sh
最后执行结果为
xx.sh
那么,平时我们遇到的把一堆命令的执行结果输出到一个变量中,需要用这个命令替换符括起来,也就可以理解了。
这里又涉及到了一个问题,虽然不少系统工程师在使用替换功能时,喜欢使用反引号将命令括起来。但是根据POSIX规范,要求系统工程师采用的是$(命令)的形式。所以,我们最好还是遵循这个规范,少用``,多用$()

三、小括号,中括号,和大括号的区别

那么,下面又涉及到了一个问题,就是小括号,中括号,和大括号的区别。
先说说小括号和大括号的区别。这两者,实际上是“命令群组”的概念,也就是commandgroup。
( ) 把 command group 放在subshell去执行,也叫做 nested sub-shell。
{ } 则是在同一个 shell 內完成,也称为 non-namedcommand group。
所以说,如果在shell里面执行“函数”,需要用到{},实际上也就是一个命令群组么。
不过,根据实测,test=$(ls -a)可以执行,但是test=${ls–a}语法上面是有错误的。估计也和上面所说的原因有关。

另外,从网上摘录的区别如下:
A,()只是对一串命令重新开一个子shell进行执行
B,{}对一串命令在当前shell执行
C,()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开
D,()最后一个命令可以不用分号
E,{}最后一个命令要用分号
F,{}的第一个命令和左括号之间必须要有一个空格
G,()里的各命令不必和括号有空格
H,()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令

两个括号(()),是代表算数扩展,就是对其包括的东西进行标准的算数计算——注意,不能算浮点数,如果需要算浮点数,需要用bc做。

至于中括号[],感觉作用就是用来比较的。比如放在if语句里面,while语句里面,等等。
这里引出来[..]和[[…]]的区别:(摘自网上,实测证实):使用[[... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误.比如,&&, ||, <,和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话,会报错。

时间: 2024-08-02 02:46:25

linux bash shell中,单引号、 双引号,反引号(``)的区别及各种括号的区别的相关文章

linux bash shell中for的用法and示例

关于linux bash shell中的for语句 在linux中shell是必不可少的一部分,但是在bash shell中有while,for,until等循环命令,今天就介绍一下关于for的一些用法.文中任何错误希望大佬们一一指出,不胜感激. bash shell中提供了for命令,用于创建通过一系列值重复的循环,每次重复使用系列中的一个值执行一个定义的命令集. for语句的基本格式如下: for---in list do commands done 在参数list中提供一系列用于迭代(上一

Bash Shell 中的特殊字符

什么是Bash Shell中的特殊字符?某些特殊字符在Bash Shell里不是表示其字符含义本身,而是另有含义,称为:meta-meaning. 1.字符:# 代表注释,如果有一行以#开始,那么意味着这行不会被执行,只是一行说明注释. 例如: # this is comments 这是一行注释. 但是这里有个例外,那就是脚本的第一行我们经常看到的: #!/bin/bash 这个指示一个脚本的解释器,说明这个脚本是由/bin/bash 来解释的. 从#为开始,后面的字符即为注释,直到该行结束.体

&lt;LINUX &gt;bash shell 入门 --linux学习笔记

首先说下我个人对于shell的理解,我觉得shell是一种通过各种控制语句将linux命令进行集合实现批处理的一种脚本语言. shell编程入门其实很简单,语法知识并不多,但是高级shell编程就很难,因为shell是用户和linux之间的桥梁,要编写高质量的shell脚本,就需要用户对linux有很全面的认识. 这里我们只分析shell脚本的语法知识,如想透彻的学习linux还需多努力. shell结构       1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建she

Linux的shell中echo改变输出显示样式

Linux的shell中echo改变输出显示样式 echo -e "\033[32;49;1m [DONE] \033[39;49;0m" 或echo -e "\e[32;49;1m [DONE] \033[39;49;0m" 输出结果 :[DONE] 文本终端的颜色可以使用“ANSI非常规字符序列”来生成.举例: echo -e "\033[44;37;5m ME \033[0m COOL" 以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字

bash shell 中的比较

1.算术比较 运算符 描述 -eq 等于 -ne 不等于 -gt 大于 -lt 小于 -ge 大于等于 -le 小于等于 举例: [ $var -eq 1 ] #变量等于1 返回真 [ $var -ne 1 ] #变量不等于1 返回真 [ $var -gt 1 ] #变量大于1 返回真 [ $var -lt 1 ] #变量小于1 返回真 [ $var -ge 1 ] #变量大于等于1 返回真 [ $var -le 1 ] #变量小于等于1 返回真 2.字符串比较 字符串比较时候使用[[ ]] 双

bash shell中测试命令

bash shell中测试命令 test命令提供了if-than语句中测试不同条件的途径.如果test命令中列出的条件成立,test命令就会退出并返回退出状态吗0 .这样if-than语句就与其他编程语言中的if-than语句类似的方式工作了.如果条件不成立,test命令就会退出并返回非零的退出状态码,使得if-than语句不会被执行. 1    test 命令的基本格式     test        condition         condition是test命令要测试的一系列参数和值.

Bash Shell 中的History命令

###  Bash Shell 中的History命令 ---------- 日常运维工作中,我们经常使用History命令去检查在这台机器上所执行的历史命令,或者谁在什么时间执行的什么命令.History命令默认情况下不显示时间,我们可以设置. ---------- - 显示所执行过的命令 简单敲下键盘,输入一个单词:history即可.或者his +table键bash自动补全命令,终端会显示行号及对应的命令. > [[email protected] ~]$ history 1  exit

Linux下shell中case命令详解(常规的break、无条件继续和有条件继续)

linux下shell中的case名字和C/C++中的switch类似,但是shell中的case更强大和复杂. 1.强大主要体现在:shell中case中的关键字可以是字符串类型,而每一项中可以包含正则表达式. 2.复杂主要体现在:shell中case的每一个项后有三个选择:break(常规的break).unconditional follow up(无条件继续)和conditional follow up(有条件继续). 这篇文章的重点是上面的第2点. case的无条件继续和有条件继续是b

bash shell中的环境变量

环境变量--bash shell使用环境变量来存储系统相关数据,并允许将数据存储在内存中. 环境变量分为:全局环境变量 本地环境变量 目录 全局环境变量 本地环境变量 设置全局环境变量 删除环境变量 PATH全局环境变量 设置系统环境变量的相关文件(登录.非登录.交互.非交互shell) 一.全局环境变量 在当前shell和子shell都可见 可以用printenv命令查看全局环境变量,大写表示是系统环境变量,小写表示是普通用户的环境变量 这是bash shell的一个标准约定,不是必须的,因此