是$(...)
一样(...)
的击?
另外,$((...))
与相同((...))
吗?
另外,${...}
与相同{...}
吗?
一般来说,美元符号代表什么?谢谢。
是$(...)
一样(...)
的击?
另外,$((...))
与相同((...))
吗?
另外,${...}
与相同{...}
吗?
一般来说,美元符号代表什么?谢谢。
tldp.org
并不是有关Bash的重要信息,因为该网站存在许多错误和误导性信息。
Answers:
$(...)
表示在子外壳的paren中执行命令并返回其stdout。例:
$ echo "The current date is $(date)"
The current date is Mon Jul 6 14:27:59 PDT 2015
(...)
表示在子外壳程序中运行括号中列出的命令。例:
$ 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
一般来说,美元符号代表什么?
它表示在给定上下文中的含义。
((...))
和(...)
,您可以认为以美元为前缀的版本与该语句的工作方式相同,但扩展到输出(其中的“输出”((...))
是算术结果。对于{...}
每种情况,存在一个更细微的类比; 。他们组及其内容从他们的周围环境想${foo}_bar
VS$foo_bar
和echo foo; echo bar > /dev/null
VS { echo foo; echo bar; } > /dev/null
。
$
符号总是表示扩展。即,基于后会发生什么$
(如((
,(
,{
,等)的一些字符串值是计算和$...
表达式替换为计算的字符串。
添加到上面的答案:
[..]
用于条件或逻辑表达式中。例:$ VAR=2
$ if [ $VAR -eq 2 ]
> then
> echo 'yes'
> fi
yes
[[...]]
为单个方括号提供扩展功能。特别是,它对于=〜运算符(在正则表达式中使用)很有用。例:$ VAR='some string'
$ if [[ $VAR =~ [a-z] ]]; then
> echo 'is alphabetic'
> fi
is alphabetic
参考:
https://linuxconfig.org/bash-scripting-parenthesis-explained