Shell 多种引号的区别(""、''、``、$())

462 阅读1分钟
  • 区分三种定界符

    • "":双引号,允许扩展,以 $ 引用其他变量。

    • '':单引号,禁用扩展,即便 $ 也视为普通字符。

    • ``:反引号,将命令的执行输出作为变量值,$() 与反引号效果基本一致,只能放命令,

      • 但是两者还是有区别的:反引号本身就对 \ 进行了转义,想在反引号中起到 \ 的特殊意义,必须使用 2\ 来进行表示(例如:\\ = \),$() 中则不需要考虑 \ 的问题,与平常使用的一样:\ = \

反引号齐本身就对\进行了转义,保留了其本身意思,如果我们想在反引号中起到\的特殊意义,我们必须使用2个\来进行表示。

所以我们可以简单的想象成反引号中: \ = \

$()中则不需要考虑\的问题,与我们平常使用的一样:\ = \。

  • 举例

    // "" 使用
    $ echo "$USER id is $UID"
    dzm id is 501
    
    // '' 使用
    $ echo '$USER id is $UID'
    $USER id is $UID
    
    // `` 使用
    $ test=`ls -l`
    $ echo $test
    total 48
    drwxr-xr-x@ 39 dzm  staff   1248 12 29 11:32 GitHub
    drwxr-xr-x@  7 dzm  staff    224 11 29 09:46 MaYun
    
    // $() 使用,与 `` 完全等值
    $ test=$(ls -l)
    $ echo $test
    total 48
    drwxr-xr-x@ 39 dzm  staff   1248 12 29 11:32 GitHub
    drwxr-xr-x@  7 dzm  staff    224 11 29 09:46 MaYun