初始化变量的不同方法

发布于 2024-12-21 22:41:10 字数 120 浏览 0 评论 0原文

据我所知,有两种方法可以使用进程的输出来初始化变量。这两者有什么区别吗?

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

岁月染过的梦 2024-12-28 22:41:10

你会得到同样的效果。

建议使用 $(),因为它更具可读性,并且更容易将一个 $() 嵌套到另一个 $() 中。

更新:

$() 语法是 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.

不知所踪 2024-12-28 22:41:10

请参阅 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.

浸婚纱 2024-12-28 22:41:10

如果您自己没有初始化变量,还有另一种方法可以将变量初始化为默认变量。

[jaypal:~/Temp] a="I have initialized var a"
[jaypal:~/Temp] echo ${a:="Default value"}
I have initialized var a
[jaypal:~/Temp] a=
[jaypal:~/Temp] echo ${a:="Default value"}
Default value

There is another way to initialize a variable to a default one if you haven't initialized it yourself.

[jaypal:~/Temp] a="I have initialized var a"
[jaypal:~/Temp] echo ${a:="Default value"}
I have initialized var a
[jaypal:~/Temp] a=
[jaypal:~/Temp] echo ${a:="Default value"}
Default value
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文