括号总结

() 单小括号

  • 命令组,括号中的命令将会开一个新的子shell执行

    • 括号中变量不能被剩下脚本使用

    • 命令之间分号隔开

    • 命令和括号之间可以没有空格

  • 命令替换,等同于``反引号

    • $(xxx)会被替换成命令执行结果

  • 初始化数组

    • arr=(a b c d)

filenum=$(ls | wc -l)
echo ${filenum}
filenum=`ls | wc -l`
echo ${filenum}
arr=(a b c d)
echo ${arr[0]}  // a
echo ${arr[@]}  //4
 

(()) 双小括号

  • 整数计算,不支持浮点

    • ((tmp=a+b))

    • c=$((a+b))

  • 算术运算比较

((c=2+1))
echo $c     //3
d=$((1+2))
echo $d     //3
// a==1 true
if (($a==1)); then
    echo "a==1"
fi
//a==1 true
if ((a==1)); then
    echo "a==1"
fi
 

[] 单中括号

  • 判断命令: 一般参数为比较表达式

    • 会根据比较的结果返回一个退出状态码

    • 可用的比较运算符有:

      • 字符串: ==, !=

      • 整数: -eq, -gt, -lt, -ne, -ge, -le

      • 逻辑: -a(||), -o(&&)

// aa == aa
if [ "aa" == "aa" ]; then
    echo "aa == aa"
else
    echo "aa != aa"
fi
// 1 < 2
if [ 1 -lt 2 ]; then
    echo "1 < 2"
fi
//1 -lt 2 -o aa == bb
if [ 1 -lt 2 -o "aa" == "bb" ]; then
    echo "1 -lt 2 -o aa == bb"
fi
 

[[]] 双中括号

  • bash程序语言中的关键字,双括号中的支付不会发生参数扩展或者命令替换

  • 支持字符串模式匹配和正则匹配

  • 支持逻辑判断符: &&, ||, <, >

// hello 与 hell? 可以加括号,也可以不加
if [[ hello == hell? ]]; then
    echo "hello == hell?"
fi
if [[ 2 -gt 1 && "hello" == "hell?" ]]; then
    echo "2 > 1 && hello == hell?"
fi
 

{} 花括号

  • 使用通配符对花括号内容进行扩展

    • 不允许有空白(除非空白被引用或者转义)

  • 代码块:

    • 不会开一个新的shell, 变量可以被余下脚本使用

    • 每句命令都要有分号

    • 括号两边有空格

`touch {1..4}.txt`  // touch 1.txt 2.txt 3.txt 4.txt
`touch {ex1, ex2}.txt`  // touch ex1.txt ex2.txt

shell中括号总结: {}, (), (()), [], [[]]的更多相关文章

  1. Shell中括号的作用

    Shell中括号的作用 作者:Danbo 时间:2015-8-7 单小括号() ①.命令组.括号中的命令将会断开一个子Shell顺序执行,所以括号中的变量不能被脚本余下的部分使用.括号中多个命令之间用 ...

  2. shell中括号的使用

    在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string ...

  3. shell中括号的特殊用法 linux if多条件判断

    一.   bash [  ] 单双括号 基本要素: Ø  [ ] 两个符号左右都要有空格分隔 Ø  内部操作符与操作变量之间要有空格:如  [  “a”  =  “b”  ] Ø  字符串比较中,&g ...

  4. (转)shell中括号的特殊用法 linux if多条件判断

    一.   bash [  ] 单双括号 基本要素: Ø  [ ] 两个符号左右都要有空格分隔 Ø  内部操作符与操作变量之间要有空格:如  [  “a”  =  “b”  ] Ø  字符串比较中,&g ...

  5. Shell编程中括号判断中赋值语句和判断语句

    #!/bin/bash declare var="xxx" # without space and use one = #1.judge whether the assignmen ...

  6. shell之小括号、中括号、大括号

    1.Shell中变量的原形:${var}  一串命令的执行 #等价于 $ var=test $ echo $var test #例如,用在这个位置 $ echo ${var}AA testAA 2.命 ...

  7. shell if条件判断中:双中括号与单中括号的区别

    电脑重装了系统,登录虚拟机的shell脚本需重写,在为编写的脚本命名时发现存在同名脚本,才想起来是连接公司服务器的登录脚本,不想写俩脚本,怕记混了,那就整合一下.代码如下: #!/bin/bash#z ...

  8. Shell 中test 单中括号[] 双中括号[[]] 的区别

    Shell test 单中括号[] 双中括号[[]] 的区别 在写Shell脚本的时候,经常在写条件判断语句时不知道该用[] 还是 [[]],首先我们来看他们的类别: $type [ [[ test ...

  9. shell编程中的单/双 小括号, 中括号, 大括号

    linux shell中的变量类型?分字符串或者数字或者bool类型吗? 参考: http://www.cnblogs.com/nufangrensheng/p/3477281.html 不分! sh ...

随机推荐

  1. 让LoadRunner再次走下神坛

    1.        LoadRunner 阻碍了性能测试人员对通信过程的理解我希望做性能测试的人能忘掉这个工具.我们都知道VuGen有录制的功能,其实录制这个功能对于测试来说是个非常不好的选择,就是跟 ...

  2. WebStorm中SVN配置

    近期在使用WebStorm进行网页开发,值得一提的是WebStorm的确是一个不错的IDE,尽管可能内存开销较大,但是在编写JS的时候提供了很多包括自动完成等强大的功能. 好了,步入正题:在实际项目开 ...

  3. openfire开发环境(3.9.1)

    1.解压源码 2.把build/eclipse中的文件cp到源码跟目录,并修改文件名,前面增加"."号,变成eclipse工程. 3.导入eclipse, 把build/lib/, ...

  4. Listen81

    Nut-Cracking Chimps Demonstrate Cultural Differences One family generally dines on Chinese takeout w ...

  5. codeforces 659G G. Fence Divercity(dp)

    题目链接: G. Fence Divercity time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  6. <opengl>使用glu绘制二次曲面

    绘制二次曲面通常要以下四步:   1.首先我们创建一个二次方程状态对象 GLUquadricObj *m_pObj;    //保存绘图模式.法线模式.法线朝向.纹理等信息 //创建二次方程状态对象 ...

  7. BZOJ4408:[FJOI2016]神秘数

    浅谈主席树:https://www.cnblogs.com/AKMer/p/9956734.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.p ...

  8. 洛谷P1330封锁阳光大学——图的染色

    题目:https://www.luogu.org/problemnew/show/P1330 此题我最初没有思路,暴搜而爆0: 然后才明白关键在于把所有点分成两类,因为可以发现点之间的关系是存在两两对 ...

  9. POJ3177(无向图变双连通图)

    Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11514   Accepted: 4946 ...

  10. web攻击之零:WEB攻击及防御技术汇总

    一.XSS攻击 [介绍] xss攻击是跨站脚本攻击,例如在表单中提交含有可执行的javascript的内容文本,如果服务器端没有过滤或转义这些脚本,而这些脚本由通过内容的形式发布到了页面上,这个时候如 ...