linux-如何在shell中使用花括号(bash)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux-如何在shell中使用花括号(bash),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1214字,纯文字阅读大概需要2分钟。
内容图文
![linux-如何在shell中使用花括号(bash)](/upload/InfoBanner/zyjiaocheng/949/2037fd1f4e054b938e1cd509b7fa6afd.jpg)
我目前正在尝试重现基本的Shell行为,尤其是重现Globing行为.
我在测试带有花括号的命令时,发现这种行为我不理解.
首先,我正在使用的目录的内容如下:
1abc 2abc 3abc abc1 abc2 abc3
然后,我键入以下命令:ls {[1-3],[a-c]} *,它按预期返回了上面的所有文件.
最后,我尝试了以下命令:ls {{,[1-3]},[a-c]} *,如您所见,它带有大括号.现在我不明白的是该命令的返回,因为它给了我:1abc 1abc 2abc 2abc 3abc 3abc abc1 abc1 abc1 abc2 abc2 abc3 abc3
如您所见,所有文件都被返回了两次,我无法弄清楚shell是如何解释这一点的.
希望我的解释清楚.
解决方法:
字符串{{,[1-3]},[a-c]} *是一个解释为brace expansion的表达式,由以下模式组成:
>“空”({,),
> [1-3],以及
> [a-c].
*字符(表示“给定目录中的每个文件名”)将应用于每个字符:
* => 1abc 2abc 3abc abc1 abc2 abc3
[1-3]* => 1abc 2abc 3abc
[a-c]* => abc1 abc2 abc3
嵌套表达式的事实并没有改变它只是这三种模式的列表的含义.使用更简单的表达式,例如{,[1-3],[a-c]} *,或使用另一个“列表列表”,例如{,{[1-3],[a-c]}} *,可以实现相同的效果.
如果您将表达式传递给echo,它将逐行打印上面各行中的所有字符:
$echo {{,[1-3]},[a-c]}*
1abc 2abc 3abc abc1 abc2 abc3 1abc 2abc 3abc abc1 abc2 abc3
但是ls默认情况下按字母顺序对条目进行排序:
$ls {{,[1-3]},[a-c]}*
1abc 1abc 2abc 2abc 3abc 3abc abc1 abc1 abc2 abc2 abc3 abc3
内容总结
以上是互联网集市为您收集整理的linux-如何在shell中使用花括号(bash)全部内容,希望文章能够帮你解决linux-如何在shell中使用花括号(bash)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。