首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在bash中如何使用括号或单括号、圆括号括号

问题 我在使用Bash时,对于括号、圆括号括号用法感到困惑,以及它们括号和单括号形式之间区别。有没有清晰解释?...回答 方括号 在 Bash 中,test 和括号 [ 是 shell 内置命令。在命令行里 test expr 和 [ expr ] 效果相同。...双方括号 [[ 是一个 shell 关键字,它启用了额外功能。例如,你可以使用 && 和 || 代替 -a 和 -o,并且还有一个正则表达式匹配运算符 =~。...此外,在简单测试中,双方括号计算速度似乎比单方括号快得多。...括号 括号除了用来界定变量名外,还用于参数扩展,因此你可以执行以下操作: •截断变量内容 •进行类似于 sed 替换 •使用默认值 •以及更多 此外,括号扩展可以创建字符串列表,这些列表通常在循环中被迭代

4100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    双引号与括号

    第一个puts命令使用了双引号,可以看到所有置换都随之发生;第二个puts命令使用括号,相应内部置换均被阻止。 ? 双引号另一常用情形是出现在嵌套命令中,且嵌套命令是外层命令参数一部分。...给变量赋值时,也可以通过括号使特殊字符被当作普通字符处理。如下图所示。在这个例子中,括号阻止了$置换。如果将括号替换为双引号则会报错。 ? 如果在一个脚本中同时使用双引号和括号会是什么结果呢?...给变量b赋值时使用了反斜杠置换,给变量c赋值时使用了双引号加括号,其中双引号在最外层,给变量d赋值时使用括号加双引号,其中括号在最外层,对比下来可以得出这样结论:在同时使用双引号和括号时,最外层做主...对于括号,如前文所述“括号置换有可能会被阻止”,这是因为括号功能稍微复杂一些,但总的来说遵循两个原则:第一个原则是如果括号是用做置换操作,则其内部置换操作会被阻止;第二个原则是如果括号用做界限符...如果需要双引号或括号作为普通字符出现在字符串中时,可通过反斜杠\置换,或者通过双引号和括号嵌套使用实现特定功能,如下图所示。 ?

    2.3K10

    我们在何时需要对Shell变量使用括号

    例如,我见过以下用法: var=10 # 声明变量 echo "${var}" # 变量一种使用方式 echo "$var" # 变量另一种使用方式 这两者有显著区别吗,还是仅仅是一种风格...变量名结尾后面通常是空格或换行符。但如果我们不想在打印变量值后接着打印空格或换行怎么办?这时就需要用括号告诉 Shell 解释器变量名结束位置。...括号还无条件需要在以下情况下使用: 扩展数组元素,如:${array[5]} 使用参数扩展操作,如:${filename%.*}(移除扩展名;剥离最小匹配) 扩展总数超过 9 位置参数,如:"{10...} {11}" 在所有情况下都使用 {},而不仅仅是在可能产生歧义情况下,可以被认为是良好编程实践。...这既是为了一致性,也是为了避免像 foo_bar.jpg 这样意外,其中下划线成为变量名一部分并不明显。 你还可以在括号内进行一些文本操作: STRING=".

    18600

    使用括号初始化集合,可别这么干

    Double Brace Initialization should not be used 前言 最近在修改sonar问题时,发现有人使用括号初始化集合,提示可能发生内存泄漏。...:bob Thread name: Finalizer Object: sandy Gc happen 分析 匿名内部类持有外部类对象引用 双括号初始化时,可以直接使用外部类对象成员name。...当然这只是表面,接下来我们从字节码层面看看到底怎么回事。 使用了匿名内部类 双括号初始化方法 非双括号初始化方法 编译后产生文件 可以发现,多了一个内部类:A$1.class。...查看内部类字节码 拥有一个外部类成员变量 通过构造方法传入了外部类对象引用 将外部类对象引用赋值给成员变量 执行我们写put方法 内部类继承于HashMap 发生了内存泄漏 使用非双括号初始化...mapsandy被回收了,而使用括号初始化mapbob却没有被回收。

    94630

    永远不要使用括号初始化实例,否则就会OOM!

    “怎么能用双括号初始化实例呢?”...老张:“使用括号初始化实例是会导致内存溢出啦!侬不晓得嘛?”...于是片刻敷衍,待老张离去之后,才悄悄打开了 Google,默默搜索了一下。 小王:哦,原来如此...... 双括号初始化分析 首先,我们来看使用括号初始化本质是什么?...双括号替代方案 即使声明为静态变量可以避免内存泄漏,但依旧不建议这样使用,为什么呢? 原因很简单,项目一般都是需要团队协作,假如那位老兄在不知情情况下把你 static 给删掉呢?...要想保证双括号初始化不会出现内存泄漏办法也很简单,只需要被 static 修饰即可,但这样做还是存在潜在风险,可能会被某人不小心删除掉,于是我们另寻它道,发现了可以使用 Java8 中 Stream

    1.7K30

    shell中括号(小括号,中括号,大括号

    一、小括号,园括号()   1、单小括号 ()     ①命令组。括号命令将会新开一个子shell顺序执行,所以括号变量不能够被脚本余下部分使用。...如:echo $((16#5f)) 结果为95 (16进位转十进制)     ③单纯用 (( )) 也可重定义变量值,比如 a=5; ((a++)) 可将 $a 重定义为6     ④双括号变量可以不使用...用作正则表达式一部分,描述一个匹配字符范围。作为test用途括号内不能使用正则。     ④在一个array 结构上下文中,中括号用来引用数组中每个元素编号。  ...④bash把双中括号表达式看作一个单独元素,并返回一个退出状态码。 三)大括号括号 {}   1、常规用法。     ①大括号拓展。(通配(globbing))将对大括号文件名做扩展。...与小括号命令不同,大括号命令不会新开一个子shell运行,即脚本余下部分仍可使用括号内变量。括号命令间用分号隔开,最后一个也必须有分号。

    3.9K10

    编程语言简史:有人不喜欢括号,于是他发明了 Python

    编程语言有上千种,但是流行不过10来种,那些我们经常使用编程语言都是谁在什么时候创造出来呢?Casper Beyer为我们进行了整理。...1957年 John Backus创建了FORTRAN语言,这是真正程序员使用第一种语言。...这在后来被证明是正确——在Electron.js被发明出来后 1972年 Dennis Ritchie在贝尔实验室上班上到无聊了,于是他决定写出带有括号C语言,这门语言取得了巨大成功。...1991年 Guido van Rossum不喜欢括号,于是他发明了Python,语法选择灵感来源自Monty Python(巨蟒剧团)和Flying Circus(飞行马戏团)。...他先是找到了Netscape然后说这门语言叫做LiveScript,但在代码评审期间Java变得流行起来,所以他们决定最好还是用括号,然后就把它更名为JavaScript。

    1.2K70

    OC中一些编程写法--({"添加代码"}) 括号用法

    imageView.clipsToBounds = YESS; [view addSubview:imageView]; view; }); 这个问题严格上讲和Objective-C没什么太大关系...,这个是GNU C对C扩展语法 Xcode采用Clang编译,Clang作为GCC替代品,和GCC一样对于GNU C语法完全支持 你可能知道if(condition)后面只能根一条语句,多条语句必须用...{}阔起来,这个语法扩展即将一条(多条要用到{})语句外面加一个括号(), 这样的话你就可以在表达式中应用循环、判断甚至本地变量等。...表达式()最后一行应该一个能够计算结果子表达式加上一个分号(;), 这个子表达式作为整个结构返回结果 这个扩展在代码中最常见用处在于宏定义中

    81620

    编程语言简史:有人不喜欢括号,于是他发明了 Python

    编程语言有上千种,但是流行不过10来种,那些我们经常使用编程语言都是谁在什么时候创造出来呢?Casper Beyer为我们进行了整理。...(本文节选) 1957年 约翰·巴克斯(John Backus)创建全世界第一套高阶语言FORTRAN,这是程序员真正意义上使用第一种语言。...1972年 丹尼斯·里奇(Dennis Ritchie )在贝尔实验室上班上到无聊时候,他决定发明带有括号语言,于是C语言诞生了,最终还取得了巨大成功。...1991年 Guido van Rossum不喜欢括号,于是决定发明一种没有括号语言,然后又因为太喜欢英国肥皂剧《Monty Python飞行马戏团》,于是,就把该语言命名为Python。...他先是找到了 Netscape 然后说这门语言叫做 LiveScript,但在代码评审期间 Java 变得流行起来,所以他们决定最好还是用括号,然后就把它更名为 JavaScript。

    1K20

    Python|判断各种括号有效使用

    有效字符串需满足: 1.左括号必须用相同类型括号闭合。 2.左括号必须以正确顺序闭合。...解决方案 思路:首先我们要讲我们输入字符串中括号提取出来到一个列表,然后判断是奇数个还是偶数个,奇数个一定不符合;如果是偶数,再遍历所有元素,因为括号在一起,通过以i和i+1形式来确定符合括号...首先我们通过一个for循环将我们输入这个字符串中括号提取出来,以通过建一个包含这些括号列表然后挨个挨个循环看是否每个元素属于这个列表,最后得到一个只含括号列表,再将其转化为一个字符串然后进行后面的操作...如果最后只剩下两个的话,我们不妨先设出一个包含3组正确顺序列表,然后将我们切片剩下字符串拿来比,如果剩下在我们设列表中的话,那么就说明是有效,反之无效。...结语 解决字符串中类似循环删除问题时候,我们可以利用切片,合并功能。还有看到题目时一定要考虑有没有简单直接方法能够帮忙理解,如本题奇数个就可以直接判断出来。

    1.3K40
    领券