Bash脚本不回显echo子进程中的新行

时间:2017-04-15 15:42:30

标签: bash echo subshell

当我在终端上运行此脚本时,它与换行符完美配合

echo -e $(echo "a \na")

输出:

a 
a

当我在bash脚本中包装它时 - test.sh:

#!/bin/sh

echo -e $(echo "a \na")

我打电话给./test.sh,我得到了这个输出:

-e a a

如何使bash脚本使用换行符直接在终端上运行相同的输出?

1 个答案:

答案 0 :(得分:2)

使用printfecho不可移植。有些shell不知道-e等。此外,使用printf您将获得更多格式选项。

printf "%s\n%s\n" a a
#or
printf "a\na\n"

您的问题的答案在@that other guy's评论中:

  

制作shebang#!/ bin / bash,否则它是一个sh脚本而不是一个   bash脚本

e.g。

sh test.sh
# -e a a
bash test.sh
# a
# a
dash test.sh
# -e a a
zsh test.sh
# a a

所以...使用printf - 将在任何地方工作,并给出相同的结果。