【问题标题】:Why it runs different for source and sh calling in shell为什么它在 shell 中的 source 和 sh 调用运行不同
【发布时间】:2016-07-26 11:06:54
【问题描述】:

我的 shell a.sh 脚本是这样的:

#!/bin/sh
# $ret maybe from database or pipe,whatever it likes:
ret="cnt
1"

echo -e $ret

并且以不同的方式调用会产生不同的结果:

$ sh a.sh
cnt 1
$ source a.sh
cnt
1
$

如何在shsource 下获得相同的输出?

【问题讨论】:

  • 运行脚本和采购它是不同的事情。另外,您需要引用echo
  • 感谢@fedorqui。这意味着echo -e "$ret"我知道shsource是不同的调用方式,细节我们可以看到Whats the difference between running a shell script as ./script.sh and sh script.sh
  • 您使用的是哪个外壳?看来一定是zsh;当您显示的脚本是来源时,只有那个 shell(在 Bash、Dash、Korn 和 zsh 中尝试过)产生两行输出;其他的产生单行输出(并且 Bash 以sh 运行,将-e 添加到输出中)。

标签: shell


【解决方案1】:

如何在shsource 下获得相同的输出?

您需要引用echo。 – 费多尔基

感谢@fedorqui。这意味着echo -e "$ret" – tonylee0329

确切地说,引用echo的参数是调整两个shell的echos之间差异的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-27
    • 2021-05-20
    • 2013-11-25
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多