zoukankan      html  css  js  c++  java
  • 【linux】shell中命令替换$(cmd)和符号`cmd`

    来源:https://zhidao.baidu.com/question/485498670.html

    作用

    $(cmd)和`cmd`的作用是相同的,在执行一条命令时,会先将其中的 ``,或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行,例如:
    echo `ls`
    会先执行 ls 得到xx.sh等,再替换原命令为:
    echo xx.sh
    最后执行结果为
    xx.sh

    例子:

    date=`date -d '1 day ago' "+%Y-%m-%d"`
    echo $date
    #结果:2017-01-09
    date=$(date -d '1 day ago' "+%Y-%m-%d")
    echo $date
    #结果:2017-01-09

    或者在shell脚本中像下面这样使用

    for path in `find $HADOOP_HOME -name "*.jar"`
    do
            export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$path
    done

    区别

    1, 反引号很容易与单引号搞混乱,对初学者来说。有时在一些奇怪的字形显示中,两种符号是一模一样的(直竖两点)。用$()可以更好的避免这种混乱

    2, 在多层次的复合替换中,反引号须要额外的跳脱( /` )处理,而 $( ) 则比较直观。例如:
    `com1`com2`` 你这么写就是错的。需要`com1/`com2/``如果有多个命令嵌套就比较复杂了。而用$()就比较直观比如$(com1$(com2$(com3)))

     如果是多个命令的话可以用;隔开。比如$ { var1=test1;var2=test2;echo $var1>a;echo $var2;}



    不过,$( ) 并不是没有毙端的...
    反引号 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。
    而 $() 并不见的每一种 shell 都能使用.

  • 相关阅读:
    Codeforces Round #609 (Div. 2)
    Educational Codeforces Round 78 (Rated for Div. 2)
    Codeforces
    crontab
    C6 C7的开机启动流程
    平均负载压力测试
    ps 和 top
    if判断
    使用3种协议搭建本地yum仓库
    linux rpm包
  • 原文地址:https://www.cnblogs.com/dplearning/p/6273103.html
Copyright © 2011-2022 走看看