我发觉到echo
直接调用时的行为略有不同
root$echo "line1\nline2"
当通过脚本调用时:
#! /bin/sh
echo "line1\nline2"
[...]
第一个案例将打印:
line1\nline2
,而后者会打印
line1
line2
So echo
总是假设有标志-e
什么时候在脚本中使用?
你的脚本有一个 shebang 行#! /bin/sh
,而您的交互式 shell 可能是 Bash。如果您想要 Bash 行为,请将脚本更改为#! /bin/bash
反而。
两个程序sh
and bash
are 不同的贝壳。即使在系统上/bin/sh
and /bin/bash
是同一个程序,它的行为会有所不同,具体取决于您使用哪个命令来调用它。 (尽管echo
不像以前那样-e
在 Bash 中默认打开sh
模式,所以你可能使用的系统sh
是真的dash
.)
如果您输入sh
根据您的提示,您会发现echo
行为方式与您的脚本中相同。但sh
不是一个非常友好的交互式 shell。
如果你想编写最大程度可移植的 shell 脚本,你应该坚持使用 vanillash
语法,但如果您不是为了广泛的分发而编写,则可以使用 Bash 脚本 - 只需确保告诉系统它们实际上是 Bash 脚本,方法是:bash
在舍邦线。
The echo
顺便说一句,command 可能是 shell 中最不一致的命令。因此,如果您追求可移植性,那么除了直接、无选项、无转义、始终换行输出之外,您最好完全避免使用它。一种非常便携的选择是printf http://linux.die.net/man/1/printf.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)