zoukankan      html  css  js  c++  java
  • shell编程 之 引号、括号的用法总结

    1 单引号

        a=1

        b='a string'

        单引号屏蔽各种特殊字符。echo ‘$a " % ' 只能得到 $a " %

        单引号可以指明界限,防止由分隔符----空格引起的歧义。$b不能写成b=a string,会报错。

    2 双引号  

        a=1

        基本和单引号一样,但是双引号支持内部字符有特殊含义,比如换行,变量,传递的参数等。echo “$a /" //  \ " 输出 1 ” / 。

    3 反引号

        a=" hello linux !"

        反引号内部先运算,然后把结果传递给反引号外边的参数,相当于$()。echo ` expr 2 + 2 ` 返回4 

        支持常用的命令操作,echo ` ls `  

    4 方括号

        a=1

        方括号内部支持数字加减乘除运算:echo $[2 + 2],echo $[2 * 2] (不用转义)

        可以用于指定边界防止歧义。  echo $[a] 返回1

        可以用于字符串运算符:  =  是否相等;!=是否不相等;-z字符串长度是否为0;-n字符串长度是否不为0;str字符串是否不为空? 

    a='abc'
    b='abc'
    if [ $a = $b ]
    then
      echo "no e"
    fi
    

        对变量和值进行条件判断,和test作用一样,但是不和test一起用,可以结合,-lt,-gt,-ge,-le,-a, -o ...[ $var1 -ne 0 -a $var2 -gt 2 ]变量1不等于0而且变量2大于2。如果用判断语句&& 和 ||,充当if后的条件语句的时候,外边还要叠套一层方括号:if [[ $a != 1 && $a != 2 ]] 或者 if [ $a -ne 1] && [ $a != 2 ]

        文件系统测试,和test作用一样,但是不一块用。[ -f daqing ] ,文件daqing存在,且为普通文件,

        在数组中的下标需要用方括号表明,a = (1 2 3) ,echo ${alist[0]} 返回1.

    5 圆括号

        数组需要用圆括号括起来,a = (1 2 3) 。

        命令组,小括号里可以放好几个命令,彼此之间用分号隔开,注意:括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用   

    astr='hehehehe'
    bstr='hahahaha'
    if test [ $astr = $bstr ]
    then
      ( echo "astr !=bstr";echo "hehe" )    #返回结果的第一行是astr != bstr,第二行是hehe
    fi
    

      圆括号也可以用于计算:$((exp))和`expr ...`是一样的,echo $(( 2 + 2 )) 返回4.

        括号里的命令之间也可以有规则,这样的用法常常充当迭代的时候的条件语句,比如可以直接使用for((i=0;i<5;i++)),

    #!/bin/bash
    for((i=0;i<=5;i++))
    do
        echo $i
    done    #返回0 1 2 3 4 5
    

    6 大括号    

        命令组。{ cmd1;cmd2;cmd3;} 在当前shell顺序执行命令cmd1,cmd2,cmd3, 各命令之间用分号隔开,最后一个命令也必须带分号。

        代码块,用于区分程序的边界或者防止变量名引起歧义。变量的值应当是${a},不引起歧义的情况下可以去掉大括号,再者,用大括号表明边界和格式,

    demoFun(){        
        echo "这是我的第一个 shell 函数!"        #这是函数主体,前一行后一行有大括号才行
    }
    demoFun
    

        大括号有一种特殊用法,{1..10}相当于从1到10,touch {a..d}.txt 结果为a.txt b.txt c.txt d.txt。大括号中没有空格。

            

        

      

  • 相关阅读:
    设计模式系列
    【ABAP系列】SAP ABAP 关于FUNCTION-POOL的理解
    【MM系列】SAP S/4 HANA 1511的BP角色创建及供应商数据的创建方法
    【ABAP系列】SAP ABAP 动态指针
    【HR系列】SAP HR PA信息类型的创建与增强
    【HANA系列】SAP UI5上传图片 用XSJS存储在HANA中的方法
    【HANA系列】SAP Vora(SAP HANA和Hadoop)简析
    【MM系列】SAP SAP库龄报表逻辑理解
    【HANA系列】SAP HANA XS Administration Tool登录参数设置
    【ABAP系列】SAP 一个完整的SAP的Abap例子(idoc,edi文件的相互转换)
  • 原文地址:https://www.cnblogs.com/0-lingdu/p/9269918.html
Copyright © 2011-2022 走看看