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

双引号与花括号

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

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

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

    问题 我在使用Bash时,对于括号、圆括号和花括号的用法感到困惑,以及它们的双括号和单括号形式之间的区别。有没有清晰的解释?...回答 方括号 在 Bash 中,test 和括号 [ 是 shell 内置命令。在命令行里 test expr 和 [ expr ] 的效果相同。...此外,在简单的测试中,双方括号的计算速度似乎比单方括号快得多。...花括号 花括号除了用来界定变量名外,还用于参数扩展,因此你可以执行以下操作: •截断变量的内容 •进行类似于 sed 的替换 •使用默认值 •以及更多 此外,花括号扩展可以创建字符串列表,这些列表通常在循环中被迭代...其中表达式的值非零,则返回 0(真),否则返回 1(假),所以: 圆括号用于创建子 shell。 此外,它们还用于创建数组。

    7400

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

    他还发明了让摩尔定律变得过时的Wirth定律(软件变慢的速度比硬件变快的速度更快),因为软件开发者会编写出连大型主机也没法跟上的臃肿软件。...这在后来被证明是正确的——在Electron.js被发明出来后 1972年 Dennis Ritchie在贝尔实验室上班上到无聊了,于是他决定写出带有花括号的C语言,这门语言取得了巨大成功。...1983年 Bjarne Stroustrup 注意到C在编译方面花的时间还不够多,于是他把自己能想到的每一项功能都增加了进去,然后称之为C++。...1991年 Guido van Rossum不喜欢花括号,于是他发明了Python,语法选择的灵感来源自Monty Python(巨蟒剧团)和Flying Circus(飞行马戏团)。...他先是找到了Netscape然后说这门语言叫做LiveScript,但在代码评审期间Java变得流行起来,所以他们决定最好还是用花括号,然后就把它更名为JavaScript。

    1.2K70

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

    编程语言有上千种,但是流行的不过10来种,那些我们经常使用的编程语言都是谁在什么时候创造出来的呢?Casper Beyer为我们进行了整理。...1972年 丹尼斯·里奇(Dennis Ritchie )在贝尔实验室上班上到无聊的时候,他决定发明带有花括号的语言,于是C语言诞生了,最终还取得了巨大的成功。...之后,他又添加了分段错误等友好的功能来提高工作效率。 倒腾出这门C语言后,他和贝尔实验室的朋友心想要不做一个C的演示程序,于是,一个叫做Unix的操作系统又诞生了。...1991年 Guido van Rossum不喜欢花括号,于是决定发明一种没有花括号的语言,然后又因为太喜欢英国肥皂剧《Monty Python飞行马戏团》,于是,就把该语言命名为Python。...他先是找到了 Netscape 然后说这门语言叫做 LiveScript,但在代码评审期间 Java 变得流行起来,所以他们决定最好还是用花括号,然后就把它更名为 JavaScript。

    1K20

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

    是否有一种是更受推荐的? 回答 在上述特定的示例代码中,没有区别。...但是,当你想要在字符串中扩展变量 foo 时,${} 中的 {} 是有用的: "${foo}bar" 因为 "$foobar" 将会扩展变量 foobar,而不是预期的变量 foo。...变量名的结尾后面通常是空格或换行符。但如果我们不想在打印变量值后接着打印空格或换行怎么办?这时就需要用花括号告诉 Shell 解释器变量名的结束位置。...花括号还无条件需要在以下情况下使用: 扩展数组元素,如:${array[5]} 使用参数扩展操作,如:${filename%.*}(移除扩展名;剥离最小的匹配) 扩展总数超过 9 的位置参数,如:"{10...这既是为了一致性,也是为了避免像 foo_bar.jpg 这样的意外,其中下划线成为变量名的一部分并不明显。 你还可以在花括号内进行一些文本操作: STRING=".

    20500

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

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

    99730

    Python中类-带括号与不带括号的区别

    所以一个类下面可以有多个方法和多个属性,属性可以只属于某个方法,也可以是全局的。   类的创建   python3创建类的方式有两种,一种带括号,一种不带括号。...创建类的时候,可以不带括号,也可以带,也可以显示继承object,如果带个()空括号,其实也是隐士的继承了object。...在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。   等号(=)用来给变量赋值。   ...“类提供默认行为,是实例的工厂”,打个比方,车是类,别克凯越是类的实例。     类的实例化只有一种方式,就是实例化的时候,需要带括号,这个括号根据实际情况可以为空,也可以传参。...上面的结果告诉我们:python的类,带括号是实例化,不带括号是赋值。(记住这个)   总结  以上内容是一个简单的知识点,小知识点容易被忽略,不清楚的可以再复习一次。

    2.6K60

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

    一、小括号,园括号()   1、单小括号 ()     ①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。...,方括号[]   1、单中括号 []     ①bash 的内部命令,[和test是等同的。...如果我们不用绝对路径指明,通常我们用的都是bash自带的命令。if/test结构中的左中括号是调用test的命令标识,右中括号是关闭条件判断的。...④bash把双中括号中的表达式看作一个单独的元素,并返回一个退出状态码。 三)大括号、花括号 {}   1、常规用法。     ①大括号拓展。(通配(globbing))将对大括号中的文件名做扩展。...与小括号中的命令不同,大括号内的命令不会新开一个子shell运行,即脚本余下部分仍可使用括号内变量。括号内的命令间用分号隔开,最后一个也必须有分号。

    3.9K10

    python 有效的括号 多种解法

    遍历输入字符串的每个字符。 如果字符是左括号('(', '{', '['),则将其推入栈中。 如果字符是右括号(')', '}', ']'),则检查栈是否为空。...如果栈为空,则返回False,因为没有与之匹配的左括号。 如果栈不为空,则弹出栈顶元素,并判断它与当前右括号是否匹配。如果不匹配,则返回False。 遍历完所有字符后,检查栈是否为空。...(、{和[的数量,初始值为0。...遍历输入字符串的每个字符。 如果字符是左括号,则相应的计数器加1。 如果字符是右括号,则相应的计数器减1。 如果任何计数器的值小于0,则返回False,因为出现了右括号比左括号多的情况。...遍历完所有字符后,检查三个计数器的值是否都为0。如果是,则返回True;否则,返回False。

    4000

    python实现括号匹配

    主要的思路: 首先设置两个列表分别存放的是各种括号的开括号和闭括号,然后遍历给定的字符串,分如下几种情况: 1.字符串首字符出现在闭括号列表中,直接结束,输出错误 2.字符串长度不为偶数,直接结束,输出错误...3.对原始字符串列表化去重,如果去重后的列表长度不为偶数直接结束,输出错误 4,遍历字符串,将属于开括号集合的括号加入到列表中,当遇上一个闭括号的时候计算该闭括号在闭括号列表中的索引与当前列表最后一个开括号在开括号列表中的索引是否一致...,一致则继续,否则直接结束,输出错误 主要是在长度很大的时候可以尽快判断一些比较明显的错误的模式,节省时间 #!...usr/bin/env python # encoding:utf-8 def bracket_mathch(one_str): ''''' 括号匹配 ''' tmp_list

    2.2K10

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

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

    82520

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

    “怎么能用双花括号初始化实例呢?”...老张:“使用双花括号初始化实例是会导致内存溢出的啦!侬不晓得嘛?”...于是片刻的敷衍,待老张离去之后,才悄悄的打开了 Google,默默的搜索了一下。 小王:哦,原来如此...... 双花括号初始化分析 首先,我们来看使用双花括号初始化的本质是什么?...双花括号的替代方案 即使声明为静态的变量可以避免内存泄漏,但依旧不建议这样使用,为什么呢? 原因很简单,项目一般都是需要团队协作的,假如那位老兄在不知情的情况下把你的 static 给删掉呢?...总结 本文我们讲了双花括号初始化因为会持有外部类的引用,从而可以会导致内存泄漏的问题,还从字节码以及反射的层面演示了这个问题。

    1.8K30
    领券