shell中echo的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
JamesHuang0331
帖子: 6
注册时间: 2011-03-15 15:33

shell中echo的问题

#1

帖子 JamesHuang0331 » 2011-10-21 22:34

本人刚刚开始学习shell编程,新手真心求教

写了一个test.sh文件,文件里面只有一句话:
echo -e "a\tb"
不过现在运行这个shell文件的时候,发现了一个问题。
如果直接sh test.sh的话,显示:
-e a b
如果将test.sh文件更改权限后运行./test.sh的话,显示:
a b
echo命令不是应该加-e选项才能输出转移字符么?为什么直接sh test.sh会默认输出转移字符呢?
PS:本人是ubuntu11.10,前天试是这个结果,今天刚刚重装,还是这个结果。难道是我电脑的问题么。。。

问题解决,2L正解,感谢~
上次由 JamesHuang0331 在 2011-10-21 23:45,总共编辑 1 次。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: shell中echo的问题

#2

帖子 lilydjwg » 2011-10-21 23:12

Ubuntu 的默认 shell 是 bash,而 sh 是 dash。为了效率,echo 通常是 shell 内置的。可能是 dash 的 echo 实现不支持 -e 选项。
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: shell中echo的问题

#3

帖子 tusooa » 2011-10-23 11:28

case "$(echo -e -n)" in
-e|-n)ECHO=/bin/echo;;
*)ECHO=echo;;
esac

代码: 全选

] ls -ld //
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: shell中echo的问题

#4

帖子 枫叶饭团 » 2011-10-23 11:44

我的程序设计书上也写着换行不用-e比较好。。。因为不通用 :em06
回复