zoukankan      html  css  js  c++  java
  • shell 变量的 {} ()

    1.Shell中变量的原形:${var}
    变量的原形:${var},即是加一个大括号来限定变量名称的范围
     
    [root@bogon sh]# aa='ajax'
    [root@bogon sh]# echo $aa
    ajax
    [root@bogon sh]# echo $aa_AA
     
    [root@bogon sh]# echo ${aa}_AA
    ajax_AA
     
    2.$(cmd)
    [root@bogon t]# ls 1.txt 2.txt
    [root@bogon t]# echo $(ls)
    1.txt 2.txt
    echo $(ls) 执行过程
    shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,
    再将此输出放到原来命令 echo $(ls)中的 $(ls)位置,即替换了$(ls),再执行echo命令
    如下:
    echo $(ls)被替换成了echo 1.txt 2.txt
    这里要注意的是$(cmd)中的命令的错误输出是不会被替换的,替换的只是标准输出
    3、一串的命令执行()和{}
     
    ()和{}都是对一串的命令进行执行,但有所区别:
    相同点:
    ()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开
     
    不同点:
    ()只是对一串命令重新开一个子shell进行执行,{}对一串命令在当前shell执行
     
    ()最后一个命令可以不用分号,{}最后一个命令要用分号
    [root@dev opt]# var=test
    [root@dev opt]# (var='notest';echo $var;)
    notest
    [root@dev opt]# (var='notest';echo $var)
    notest
    [root@dev opt]# { var=notest;echo $var;}
    notest
     
    ()里的第一个命令和左边括号不必有空格,{}的第一个命令和左括号之间必须要有一个空格
    [root@dev opt]# { var=notest;echo $var;}
    notest
     
    ()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令
     
    从1加到100的和:
    [root@dev opt]# cat for.sh
    #!/bin/bash
    sum=0
    for  ((i=1; i<=100; i++))
    do
      sum=`expr $sum + $i`
    done
    echo $sum
  • 相关阅读:
    高二下期末考试
    LG月赛.7
    CF1187E
    P5440 【XR-2】奇迹
    P1084 疫情控制
    P1083 借教室
    P2680 运输计划
    P3128 [USACO15DEC]最大流Max Flow
    博弈入门
    HDU 1907
  • 原文地址:https://www.cnblogs.com/putihuakai/p/11401469.html
Copyright © 2011-2022 走看看