`
uptake
  • 浏览: 21047 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

shell 中括号的用法

阅读更多
test , [] , [[]]
因为 shell 和我们通常编程语言不同,更多的情况是和它交互,总是调用别人。 所以有些本属于程序语言本身的概念在 shell 中会难以理解。"基本功" 不好, 更容易 "犯困" 了,我就是一个 :-) 。
以 bash 为例 (其他兼容 shell 差不多):
1. test 和 [ 是 bash 的内部命令,GNU/linux 系统的 coreutils 软件包通 常也带 /usr/bin/test 和 /usr/bin/[ 命令。如果我们不用绝对路径指 明,通常我们用的都是 bash 自带的命令。
2. [[ 是 bash 程序语言的关键字!
$ ls -l /usr/bin/[ /usr/bin/test
-rwxr-xr-x 1 root root 37400  9月 18 15:25 /usr/bin/[
-rwxr-xr-x 1 root root 33920  9月 18 15:25 /usr/bin/test
$ type [ [[ test
[ is a shell builtin
[[ is a shell keyword
test is a shell builtin
绝大多数情况下,这个三个功能通用。但是命令和关键字总是有区别的。命令和 关键字的差别有多大呢?
如果是命令,它就和参数组合为一体被 shell 解释,那样比如 ">" "<" 就被 shell 解释为重定向符号了。关键字却不这样。
在 [[ 中使用 && 和 ||
[ 中使用 -a 和 -o 表示逻辑与和逻辑或。
[[ 中可以使用通配符
arch=i486
[[ $arch = i*86 ]] && echo "arch is x86!"
[[ 中匹配字符串或通配符,不需要引号
    [[ $arch_com = i386 || $ARCH = i*86 ]] &&
    cat >> $TFS_REPO <<EOF
[tfs-i386]
name=GTES11.3 prelim1
baseurl=${BASEURL}i386/
enabled=1
EOF

----------------------------------------------------------------------

[[]]、[]都是用来测试的,[[]]是关键字,里面可以用&&、||、<、>等类似C语言的语法;[]是bash内嵌的命令,也是用于测试的。[[]]通用性更好些。
(()),类似let,用于计算表达式。()可以把多个命令括起来,在一个子shell运行
分享到:
评论

相关推荐

    shell中的各种括号的使用方法

    在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: ...1.Shell中变量的原形:${var} 大家常见的变量形式都是$var,如 $ var=test $ echo $var test 但当你要显示变量值加

    简介Linux中cp和mv搭配{,}在shell当中的用法

    主要介绍了简介Linux中cp和mv搭配{,}在shell当中的用法,作者举了四个这样的大括号扩展示例,需要的朋友可以参考下

    跟老男孩学Linux运维:Shell编程实战

    / 223.1 什么是Shell变量 / 223.2 环境变量 / 233.3 普通变量 / 313.4 变量定义技巧总结 / 40第4章 Shell变量知识进阶与实践 / 414.1 Shell中特殊且重要的变量 / 414.2 bash Shell内置变量命令 / 524.3 ...

    shell 里 awk print 的用法详解

    空出的任何行动括号什么都不做。它不会执行默认的打印操作。 8。中的每个行动的声明应该用分号分隔。让我们创建employee.txt文件,其中有 首先, 你需要先了解awk 的工作原理: 1。AWK读取输入文件一次一行

    mkdirps-brackets:允许在文件夹创建路径中使用括号扩展

    熟悉在shell中使用mkdir -p任何人都会熟悉方括号扩展语法。 它允许一次创建多个子目录。 例如,如果您想为前端项目创建一个基本的src文件夹,则可以执行以下操作: var mkdirp = require ( 'mkdirps-brackets' ) ;...

    shellsync:使用 Node.js 和 TypeScript 同步 shell 脚本

    强大:将 shell 世界与 JavaScript 或 TypeScript 中的函数、模块、库、try/catch/finally、正则表达式等结合起来。 安全:避免大多数 Bash 陷阱并使用自动、。 健壮:使用并通过强化您的代码。概述用法使用sh同步...

    github-mirror.sh:自动镜像 github 用户公共存储库的简单 shell 脚本

    用法 $ github-mirror.sh mirror [USER]... 作为一个实际例子,这就是我使用的: $ github-mirror.sh mirror koraa inexor-game premium-cola Shoctode soup 您也可以备份维基: $ show_wiki=true github-mirror.sh ...

    2009 达内Unix学习笔记

    [] 匹配中括号里的内容[a-z][A-Z][0-9]。 ! 事件。 $ 取环境变量的值。 | 管道。把前一命令的输出作为后一命令的输入,把几个命令连接起来。 |经常跟tee连用,tee 把内容保存到文档并显示出来。 三、通用后...

    Linux高级bash编程

    双圆括号结构 10. 循环和分支 10.1. 循环 10.2. 嵌套循环 10.3. 循环控制 10.4. 测试与分支(case和select结构) 11. 内部命令与内建 11.1. 作业控制命令 12. 外部过滤器,程序和命令 12.1. 基本命令 ...

    Advanced Bash-Scripting Guide <>

    9.7. 双圆括号结构 10. 循环和分支 10.1. 循环 10.2. 嵌套循环 10.3. 循环控制 10.4. 测试与分支(case 和select 结构) 11. 内部命令与内建 11.1. 作业控制命令 12. 外部过滤器,程序和命令 12.1. 基本命令 12.2. 复杂...

    glob:适用于.NET和.NET Core的AC#Glob库

    球状 适用于.NET和.NET Core的AC#Glob库。... 匹配括号中的一个字符 [!abc] 匹配括号中没有的任何字符 ** 匹配零个或多个目录 {abc,123} 以逗号分隔的一组文字,匹配“ abc”或“ 123” 用法 例 var glob

    shellprcsr:Python中的CLI

    例如,如果您键入“ --file -a create [名称] [扩展名] [文件夹]”,则仅键入“ --file -a create”,方括号中的其他参数只会使您不满意相应的提示。 信息: “ shell.py”文件通过“ interpreter.py”文件执行...

    s3-resource-simple:Concourse CI资源,用于将文件上传到S3

    在Pipeline YAML文件中包括以下内容,替换尖括号( &lt; &gt; )中的值: resource_types : - name : type : docker-image source : repository : 18fgsa/s3-resource-simple resources : - name : type : ...

    deer:zsh的类似游侠的文件导航

    鹿描述deer是的文件导航器,受启发。 为什么我之所以创建deer是因为我真的很喜欢将ranger用作我的Shell的扩展,以快速浏览目录。 不幸的是,它的启动时间... 按键和功能这些函数可以绑定自定义键(默认值在括号中):

    abrevio_cli:Abrev.io的命令行工具

    Abrevio命令行界面 这是Abrevio服务的命令行外壳脚本。 有关更多信息,请访问 。...括号中的参数是可选的,其用法如下: d仅显示:此参数用于在命令行中显示结果。 如果未指定,脚本将尝试调用默认浏览器以打开链接

    cmd操作命令和linux命令大全收集

    它在 Windows NT/2000/XP 中均可使用,但在 Windows 98 中却没有集成这一个工具。 4. explorer-------打开资源管理器 5. logoff---------注销命令 6. shutdown-------60秒倒计时关机命令 7. lusrmgr.msc----本机...

    突破程序员基本功的16课.part2

    12.4.3 Shell排序 12.5 归并排序 12.6 桶式排序 12.7 基数排序 12.8 小结 第13课 程序开发 13.1 扎实的基本功 13.1.1 快速的输入能力 13.1.2 编程实现能力 13.1.3 快速排错 13.2 程序开发之前 13.2.1 ...

Global site tag (gtag.js) - Google Analytics