有和没有美元的双括号

时间:2015-07-06 21:10:45

标签: bash

bash中$(...)(...)相同吗? $((...))也与((...))相同吗? ${...}也与{...}相同吗?更一般地说,美元符号代表什么?谢谢。

2 个答案:

答案 0 :(得分:123)

  • $(...)表示在子shell中的parens中执行命令并返回其标准输出。例如:

    $ echo "The current date is $(date)"
    The current date is Mon Jul  6 14:27:59 PDT 2015
    
  • (...)表示在子shell中运行parens中列出的命令。例如:

    $ a=1; (a=2; echo "inside: a=$a"); echo "outside: a=$a"
    inside: a=2
    outside: a=1
    
  • $((...))表示执行算术并返回计算结果。例如:

    $ a=$((2+3)); echo "a=$a"
    a=5
    
  • ((...))表示执行算术,可能会更改shell变量的值,但不返回其结果。例如:

    $ ((a=2+3)); echo "a=$a"
    a=5
    
  • ${...}表示返回大括号中命名的shell变量的值。例如:

    $ echo ${SHELL}
    /bin/bash
    
  • {...}表示将大括号中的命令作为一组执行。例如:

    $ false || { echo "We failed"; exit 1; }
    We failed
    
  

更一般地说,美元符号代表什么?

这意味着在给定的背景下它意味着什么。

答案 1 :(得分:4)

添加到上面的答案:

  1. [..]用于条件或逻辑表达式。示例:
$ VAR=2
$ if [ $VAR -eq 2 ]

> then
> echo 'yes'
> fi
yes
  1. [[...]]为单个方括号提供了扩展功能。特别是,它对于=〜运算符(在正则表达式中使用)很有用。示例:
$ VAR='some string'
$ if [[ $VAR =~ [a-z] ]]; then
> echo 'is alphabetic'
> fi
is alphabetic

参考:

https://linuxconfig.org/bash-scripting-parenthesis-explained