初始化变量的不同方法
据我所知,有两种方法可以使用进程的输出来初始化变量。这两者有什么区别吗?
ex1=`echo 'hello world'`
ex2=$(echo 'hello world')
As far as I've seen there are two ways to initialize a variable with the output of a process. Is there any difference between these two?
ex1=`echo 'hello world'`
ex2=$(echo 'hello world')
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你会得到同样的效果。
建议使用
$()
,因为它更具可读性,并且更容易将一个$()
嵌套到另一个$()
中。更新:
$()
语法是 POSIX 1003.1 标准(2004 版)。然而,在一些较旧的 UNIX 系统(SunOS、HP-UX 等)上,/bin/sh
无法理解它。如果您需要脚本在此类环境中工作,您可能需要使用反引号“`”或使用另一个 shell(通常是 ksh)。
如果您不知道使用哪种语法 - 请使用
$()
。不推荐使用反引号语法。You get same effect.
The
$()
is recommended since it's more readable and makes it easier to nest one$()
into another$()
.Update:
The
$()
syntax is a POSIX 1003.1 standard (2004 edition). However, on some older UNIX systems (SunOS, HP-UX, etc.) the/bin/sh
does not understand it.You might need to use backtick "`" instead or use another shell (usually it's ksh) if you need your script to work on such environment.
If you don't know which syntax to use - use
$()
. Backtick syntax is deprecated.请参阅 http://mywiki.wooledge.org/BashFAQ/082
还请注意
$ ()
是 POSIX,所以它可以在 sh 上工作。see http://mywiki.wooledge.org/BashFAQ/082
also notice that
$()
is POSIX so it does work on sh.如果您自己没有初始化变量,还有另一种方法可以将变量初始化为默认变量。
There is another way to initialize a variable to a default one if you haven't initialized it yourself.