shell中括号总结: {}, (), (()), [], [[]]

括号总结

() 单小括号

  • 命令组,括号中的命令将会开一个新的子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
时间: 2024-10-10 07:31:10

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

shell中括号的特殊用法

shell中括号的特殊用法 Shell中的括号有其特殊的用法, 现总结如下:1. 符号$后的括号${a} 变量a的值, 在不引起歧义的情况下可以省略大括号.$(cmd) 命令替换, 结果为shell命令cmd的输出, 和`cmd`效果相同, 不过某些Shell版本不支持$()形式的命令替换, 如tcsh.$((exp)) 和`expr exp`效果相同, 计算数学表达式exp的数值, 其中exp只要符合C语言的运算规则即可, 甚至三目运算符和逻辑表达式都可以计算. a=1;b=2echo $[

【shell】Linux shell中括号的用法

Linux shell中括号的用法 概述 本文主要介绍Linux中括号的用法,主要包含判断文件和变量. **注意事项**:中括号两边必须有空格. 使用中括号会涉及到的知识 &&.|| 在本文对文件或者变量做判断的时候,可能会多次使用到&&和||这两个符号,所以在我们进入中括号的学习之前首先了解一下这两个符号的作用. &&:并 --> 两真才为真,如果有两个条件,第一个为真,那么肯定会判断第二个条件:如果第一个条件为假,那么第二个条件将不会判断.(第一个

Shell脚本编程知识点总结及范例

 一:关于语言 1)编译性语言 编译型语言多半运作于底层,所处理的是字节.整数.浮点数或其它及其机器层经的对象.处理过程为:源程序--预处理--编译--汇编--链接,编译性语言为静态语言. 2)解释性语言 解释性语言读入程序代码并将其转化为内部的形式加以执行.处理过程:解释性(文本文件)-解释器去读取并执行.解释性语言为动态语言. 二:基础 变量类型 linux脚本中的变量不需要事先声明,而是直接定义使用(这点不同于其他高级编程语言中变量的使用)bash变量类型分为本地变量和环境变量. 本地变量

shell学习笔记

一.shell变量 1.变量名与赋值符号间不能有空格. 2.首个字符必须为字母a~z或A~Z. 3.使用一个已定义的变量,在变量名前加'$',如: myName=“firefly” echo $myname echo ${myName} 加花括号帮助识别变量的边界,建议加上s. 4.删除变量:unset varName,不能删除只读变量. 5.三种变量:局部变量.环境变量.shell变量 二.shell替换 1.变量替换 echo -e "hello, Emma!\n" 若无-e,则不

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

#!/bin/bash declare var="xxx" # without space and use one = #1.judge whether the assignment statement returns true echo "----------------------test assignment in bracket --------------------------------" [ var="yyyy" ] &&

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

1.Shell中变量的原形:${var}  一串命令的执行 #等价于 $ var=test $ echo $var test #例如,用在这个位置 $ echo ${var}AA testAA 2.命令替换$(cmd) 一串命令的执行 命令替换$(cmd)和符号`cmd`(注意这不是单引号,在美式键盘上,`是ESC下面的那个键)有相同之处 $ ls a b c $ echo $(ls) a b c $ echo `ls` a b c 我们来分析一下命令echo $(ls),以便理解所谓命令替换是

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

一.小括号,园括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ②命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh. ③用于初始化数组.如:array=(a b c d) 2.双小括号 ((  )

shell条件判断中单个中括号和霜中括号有什么需要

1.单中括号 [] ①bash 的内部命令,[和test是等同的.如果我们不用绝对路径指明,通常我们用的都是bash自带的命令.if/test结构中的左中括号是调用test的命令标识,右中括号是关闭条件判断的.这个命令把它的参数作为比较表达式或者作为文件测试,并且根据比较的结果来返回一个退出状态码.if/test结构中并不是必须右中括号,但是新版的Bash中要求必须这样. ②Test和[]中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq,-gt

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

电脑重装了系统,登录虚拟机的shell脚本需重写,在为编写的脚本命名时发现存在同名脚本,才想起来是连接公司服务器的登录脚本,不想写俩脚本,怕记混了,那就整合一下.代码如下: #!/bin/bash#zxl.sh 脚本名 if [ $1 == 1 ] then        ssh a.a.a.a else        ssh b.b.b.b fi so easy,运行脚本  ./zxl.sh  1  和  ./zxl.sh  2  成功登录了公司服务器和虚拟机.今天登录的时候,却出问题了. 我