我的编程空间,编程开发者的网络收藏夹
学习永远不晚

shell中小括号、中括号及大括号的区别是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

shell中小括号、中括号及大括号的区别是什么

这篇文章主要讲解了“shell中小括号、中括号及大括号的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“shell中小括号、中括号及大括号的区别是什么”吧!

一、小括号,圆括号()

1、单小括号 ()

  ①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。

  ②命令替换。等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。有些shell不支持,如tcsh。

  ③用于初始化数组。如:array=(a b c d)

2、双小括号 (( ))

  ①整数扩展。这种扩展计算是整数型的计算,不支持浮点型。((exp))结构扩展并计算一个算术表达式的值,如果表达式的结果为0,那么返回的退出状态码为1,或者 是"假",而一个非零值的表达式所返回的退出状态码将为0,或者是"true"。若是逻辑判断,表达式exp为真则为1,假则为0。

  ②只要括号中的运算符、表达式符合C语言运算规则,都可用在$((exp))中,甚至是三目运算符。作不同进位(如二进制、八进制、十六进制)运算时,输出结果全都自动转化成了十进制。如:echo $((16#5f)) 结果为95 (16进位转十进制)

  ③单纯用 (( )) 也可重定义变量值,比如 a=5; ((a++)) 可将 $a 重定义为6

  ④常用于算术运算比较,双括号中的变量可以不使用$符号前缀。括号内支持多个表达式用逗号分开。 只要括号中的表达式符合C语言运算规则,比如可以直接使用for((i=0;i<5;i++)), 如果不使用双括号, 则为for i in `seq 0 4`或者for i in {0..4}。再如可以直接使用if (($i<5)), 如果不使用双括号, 则为if [ $i -lt 5 ]。

二、中括号,方括号[]

1、单中括号 []

  ①bash 的内部命令,[和test是等同的。如果我们不用绝对路径指明,通常我们用的都是bash自带的命令。if/test结构中的左中括号是调用test的命令标识,右中括号是关闭条件判断的。这个命令把它的参数作为比较表达式或者作为文件测试,并且根据比较的结果来返回一个退出状态码。if/test结构中并不是必须右中括号,但是新版的Bash中要求必须这样。

  ②Test和[]中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq,-gt这种形式。无论是字符串比较还是整数比较都不支持大于号小于号。如果实在想用,对于字符串比较可以使用转义形式,如果比较"ab"和"bc":[ ab \< bc ],结果为真,也就是返回状态为0。[ ]中的逻辑与和逻辑或使用-a 和-o 表示。

  ③字符范围。用作正则表达式的一部分,描述一个匹配的字符范围。作为test用途的中括号内不能使用正则。

  ④在一个array 结构的上下文中,中括号用来引用数组中每个元素的编号。

2、双中括号[[ ]]

  ①[[是 bash 程序语言的关键字。并不是一个命令,[[ ]] 结构比[ ]结构更加通用。在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生参数扩展和命令替换。

  ②支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式。字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。[[ ]] 中匹配字符串或通配符,不需要引号。

  ③使用[[ ... ]]条件判断结构,而不是[ ... ],能够防止脚本中的许多逻辑错误。比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。比如可以直接使用if [[ $a != 1 && $a != 2 ]], 如果不适用双括号, 则为if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ]。

  ④bash把双中括号中的表达式看作一个单独的元素,并返回一个退出状态码。

例子:

if ($i<5) if [ $i -lt 5 ] if [ $a -ne 1 -a $a != 2 ] if [ $a -ne 1] && [ $a != 2 ] if [[ $a != 1 && $a != 2 ]] for i in $(seq 0 4);do echo $i;donefor i in `seq 0 4`;do echo $i;donefor ((i=0;i<5;i++));do echo $i;donefor i in {0..4};do echo $i;done

三、大括号、花括号 {}

1、常规用法

  ①大括号拓展。(通配(globbing))将对大括号中的文件名做扩展。在大括号中,不允许有空白,除非这个空白被引用或转义。第一种:对大括号中的以逗号分割的文件列表进行拓展。如 touch {a,b}.txt 结果为a.txt b.txt。第二种:对大括号中以点点(..)分割的顺序文件列表起拓展作用,如:touch {a..d}.txt 结果为a.txt b.txt c.txt d.txt

# ls {ex1,ex2}.sh ex1.sh ex2.sh # ls {ex{1..3},ex4}.sh ex1.sh ex2.sh ex3.sh ex4.sh # ls {ex[1-3],ex4}.sh ex1.sh ex2.sh ex3.sh ex4.sh

  ②代码块,又被称为内部组,这个结构事实上创建了一个匿名函数 。与小括号中的命令不同,大括号内的命令不会新开一个子shell运行,即脚本余下部分仍可使用括号内变量。括号内的命令间用分号隔开,最后一个也必须有分号。{}的第一个命令和左括号之间必须要有一个空格。

2、几种特殊的替换结构

${var:-string},${var:+string},${var:=string},${var:?string}

  ①${var:-string}和${var:=string}:若变量var为空,则用在命令行中用string来替换${var:-string},否则变量var不为空时,则用变量var的值来替换${var:-string};对于${var:=string}的替换规则和${var:-string}是一样的,所不同之处是${var:=string}若var为空时,用string替换${var:=string}的同时,把string赋给变量var:${var:=string}很常用的一种用法是,判断某个变量是否赋值,没有的话则给它赋上一个默认值。

  ②${var:+string}的替换规则和上面的相反,即只有当var不是空的时候才替换成string,若var为空时则不替换或者说是替换成变量 var的值,即空值。(因为变量var此时为空,所以这两种说法是等价的)

  ③${var:?string}替换规则为:若变量var不为空,则用变量var的值来替换${var:?string};若变量var为空,则把string输出到标准错误中,并从脚本中退出。我们可利用此特性来检查是否设置了变量的值。

  补充扩展:在上面这五种替换结构中string不一定是常值的,可用另外一个变量的值或是一种命令的输出。

感谢各位的阅读,以上就是“shell中小括号、中括号及大括号的区别是什么”的内容了,经过本文的学习后,相信大家对shell中小括号、中括号及大括号的区别是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

shell中小括号、中括号及大括号的区别是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

shell中小括号、中括号及大括号的区别是什么

这篇文章主要讲解了“shell中小括号、中括号及大括号的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“shell中小括号、中括号及大括号的区别是什么”吧!一、小括号,圆括号()1、
2023-06-25

shell 中小括号、中括号及大括号的区别解析

目录一、小括号,圆括号()1、单小括号 ()2、双小括号 (( ))二、中括号,方括号[]1、单中括号 []2、双中括号[[ ]]三、大括号、花括号 {}1、常规用法2、几种特殊的替换结构一、小括号,圆括号() 1、单小括号 ()①命令组h
2022-06-04

Shell中的单中括号和双中括号的用法详解

SHELL是Unix系统的用户与操作系统之间的一种接口。它既是UNIX系统的命令解释程序,又是一种高级的命令程序设计语言。作为命令解释程序,SHELL接收用户输入的命令,将命令翻译成一个动作序列,然后调用系统过程执行这条命令。作为命令程序设
2022-12-23

shell中各种括号的作用是什么

今天就跟大家聊聊有关shell中各种括号的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、小括号,圆括号()1、单小括号 ()  ①命令组。括号中的命令将会新开一个子sh
2023-06-09

c++中大括号有什么用

c++ 大括号的作用包括:代码块:将语句分组,形成一个整体;作用域:确定变量的有效范围;初始化器列表:初始化数组、结构体和类对象;无名命名空间:隐藏符号,防止冲突;函数、类和宏定义等其他用途。C++ 中大括号的作用大括号({})在 C++
c++中大括号有什么用
2024-05-01

php中括号指的是什么

本篇内容主要讲解“php中括号指的是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php中括号指的是什么”吧!php的中括号就是一种符号,一般是用来通过数组的键名来获取数组相应的值,其实使用
2023-07-04

c++中小括号的用法

c++ 中小括号有以下用途:1. 括号优先级最高;2. 用于调用函数和传递参数;3. 可声明并初始化变量;4. 强制类型转换;5. 访问数组元素;6. 将语句组合成语句块;7. 改变和提升运算符优先级。由此,c++ 程序员可编写清晰、简洁和
c++中小括号的用法
2024-04-28

c++中中括号是什么意思

c++kquote>中括号在 c++ 中有以下含义:数组元素索引指针对象解引用容器元素迭代下标运算符重载特殊情况下函数调用(当函数名重载了运算符时)中括号在 C++ 中的含义中括号([])在 C++ 中具有以下含义:1. 数组索引中
c++中中括号是什么意思
2024-04-28

c++中大括号怎么输入

在 c++ 中输入大括号有两种方法:1. 单反斜杠和问号:{ 和 };2. ascii 码:左括号(alt + 123),右括号(alt + 125)。对于特殊键盘布局,可以使用快捷键:左括号(shift + [),右括号(shift +
c++中大括号怎么输入
2024-05-01

Python中括号()[]{}有什么用

这篇文章将为大家详细讲解有关Python中括号()[]{}有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言:Python主要有三种数据类型:字典、列表、元组。其分别由花括号,中括号,小括号表示。
2023-06-25

php中括号代表什么

中括号 ([]) 在 php 中用于以下用途:数组索引:获取或设置数组元素的值。数组声明:声明包含元素的数组。哈希表:声明键值对(php 7.4+)。范围解析:解析变量或对象的范围。可变变量名:创建包含变量名的变量。中括号 ([]) 在 P
php中括号代表什么
2024-04-27

c++中中括号表示什么

中括号在 c++ 中具有多种用途:访问数组元素和解引用指针。定义和访问矢量中的元素,以及创建范围对象。访问关联容器中的元素。指定函数参数。指定数组大小。中括号在 C++ 中的用法中括号 [] 在 C++ 中有多种用法,具体取决于上下文:
c++中中括号表示什么
2024-04-28

C#中括号强转、as、is区别详解

本文主要介绍了C#中括号强转、as、is区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-06

如何使用shell中的各种括号

这篇文章主要讲解了“如何使用shell中的各种括号”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用shell中的各种括号”吧!在这里我想说的是几种shell里的小括号,大括号结构和有括
2023-06-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录