关于Shell中命令替换$(...)与后置引用`...`的不同

命令替换

在bash中,$( )` `(反引号)都是用来作命令替换的。
命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。

$( )与``

在操作上,这两者都是达到相应的效果,但是建议使用$( ),理由如下:

  • ``很容易与‘‘搞混乱,尤其对初学者来说。
  • 在多层次的复合替换中,``必须要额外的跳脱处理(反斜线),而$( )比较直观。
  • 最后,$( )的弊端是,并不是所有的类unix系统都支持这种方式,但反引号是肯定支持的。
# 将cmd1执行结果作为cmd2参数,再将cmd2结果作为cmd3的参数

cmd3 $(cmd2 $(cmd1))

# 如果是用反引号,直接引用是不行的,还需要作跳脱处理

cmd3 `cmd2 \`cmd1\``

  

时间: 2024-12-12 06:01:03

关于Shell中命令替换$(...)与后置引用`...`的不同的相关文章

Shell中命令替换$(...)与后置引用`...`的区别与联系

一. 命令替换 a.在bash中,$( )与``(反引号)都是用来作命令替换的. b.命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行. 例子1: $ echo today is $(date "+%Y-%m-%d") today is 2014-07-01 二. $( )与``(反引号) (1)区别 `CMD`在执行时,shell会不管``内是什么都先进行解释,再把解释后的最终结果送给shell去执行.如果解释后的最终结果

shell中命令间的逻辑关系

在shell中命令执行成功返回值为0,不成功返回值为非0 逻辑与: shell中0为真,非0为假 第一个条件为真时,第二条件必须判断: 第一个条件为假时,第二条件不再判断,最终结果为假: 当第一个命令执行成功继续执行第二个命令,最终结果由第二个命令执行结果决定. 当第一个命令执行失败第二个命令不再执行,最终结果为失败. 理解为乘法运算(0为假1为真) 1*1=1        1*0=0          0*1=0        0*0=0 例: 1.user1存在,前一条命令执行成功,第二条

【转】Bash Shell中命令行选项/参数处理

原文网址:http://www.cnblogs.com/FrankTan/archive/2010/03/01/1634516.html 0.引言 写程序的时候经常要处理命令行参数,本文描述在Bash下的命令行处理方式. 选项与参数: 如下一个命令行: ./test.sh -f config.conf -v --prefix=/home 我们称-f为选项,它需要一个参数,即config.conf, -v 也是一个选项,但它不需要参数. --prefix我们称之为一个长选项,即选项本身多于一个字符

Bash Shell中命令行选项/参数处理

0.引言 写程序的时候经常要处理命令行参数,本文描述在Bash下的命令行处理方式. 选项与参数: 如下一个命令行: ./test.sh -f config.conf -v --prefix=/home 我们称-f为选项,它需要一个参数,即config.conf, -v 也是一个选项,但它不需要参数. --prefix我们称之为一个长选项,即选项本身多于一个字符,它也需要一个参数,用等号连接,当然等号不是必须的,/home可以直接写在--prefix后面,即--prefix/home,更多的限制后

shell中命令的执行流程

在shell中,一个命令有3中写法: 1 可以直接写(Normal Command) 2 可以放在双引号中("Command") 3 可以放在单引号中('Comand') 这3中写法,命令的执行流程也是不一样的,如下图所示: alias替换 将alias替换成真正的命令,比如将ls替换成ls --color=auto brace替换 将a{b,c}e替换成abe,ace ~替换 将~替换成HOME目录 变量替换 将$开头的变量替换为其真正的值 执行替换命令 即执行$(command)或

shell中命令之间数据的传递

1.管道 "|" ls | cat -n > out.txt 2. 子shell 2.1 子shell 说明 在shell脚本中可以用()操作符可以定义一个子shell #/bin/bash pwd (cd / ; ls) pwd 执行结果 说明: 当命令在子shell中执行的时候不会对当前shell有任何影响 2.2 获取子shell 中的数据 cmd_output=$(COMMANDS) out=$(ls -l | cat -n) #!/bin/bash out=$(ls -

shell中的替换

shell中如果存在一些特殊的字符,就需要进行替换,可进行命令替换.变量替换.转义替换 1.转义字符的替换 shell中包含以下的转移字符 \a   响铃警报\\   反斜杠 \b  退格(删除键) \f   换页(FF),将当前位置移到下页开头 \n  换行 \r   回车 \t   水平制表符 \v   垂直制表符 以上转移字符都可以使用在echo中,通过使用-e 完成转义字符的替换,否者会原样输出,也可通过-E 禁止转移,通过-n可以禁止插入换行符 2.命令替换 如下声明将命令date赋值

C++中前置操作符和后置操作符的重载

1,C 语言中讨论了原生含义,C++ 中有必要考虑前置.后置操作符能够重载,有何问题: 2,值得思考的问题: 1,下面的代码有没有区别?为什么? 1,i++  // i 的值作为返回值,i 自增 1: 2,++i  // i 自增 1,i 的值作为返回值: 3,没有使用返回值,由于编译器(不同的编译器都是一样的)的优化,在工程上面,这两行代码没有区别: 2,真的有区别吗?编程实验: 1,main.cpp 文件: 1 #include <iostream> 2 #include <stri

Bash Shell中命令行选项/OA现金盘平台租用

写程序的时候经常要处理命令行参数,本文描述在Bash下的命令行处理方式. 选项与参数: OA现金盘平台租用(企 娥:217 1793 408) 如下一个命令行: . / test.sh - f config.conf - v -- prefix =/ home 我们称-f为选项,它需要一个参数,即config.conf, -v 也是一个选项,但它不需要参数. --prefix我们称之为一个长选项,即选项本身多于一个字符,它也需要一个参数,用等号连接,当然等号不是必须的,/home可以直接写在--