2010-02-15 82 views
1

当我在终端(bash)的运行它回波打印出-e内部脚本

echo -e ."\c" 

打印出.并且抑制换行符。

当我运行下面的脚本(所有的代码)

echo -e ."\c" 
echo -e ."\c" 

它打印出..并抑制新行。

当我在shebang脚本中运行它时(!#/bin/sh),它打印出-e . -e .并禁止换行符。

为什么?我该如何预防呢?

编辑: 我想,以防止打印出-e的,所以我的输出应为. .

+0

是你的家当行实际上'#!/ bin中/ echo'?在这种情况下,这可能是由于echo是内置的,shebanged文件实际执行的二进制文件不能解释-e。 – falstro 2010-02-15 17:27:40

+0

不,它的'#!/ bin/sh',还有-e标签实际上可以工作,但它仍然会打印出来。 – 2010-02-15 17:28:12

+0

只是在此澄清:您期望看到什么结果,以及您试图阻止哪部分? – 2010-02-15 17:28:19

回答

1

脚本家当改变#!/bin/bash代替#!/bin/sh,看看它是否工作

+1

或者使用/ bin/echo如果你想保持shebang不变 – shuvalov 2010-02-15 17:42:12

+0

更改/ bin/sh更安全,因为如果在bash中使用了sh,那么这些东西将不起作用。 – ghostdog74 2010-02-16 00:50:05

+0

鉴于我使用sh编写并测试了脚本,在使用bash时可能会发生什么事情? (它现在没有实际意义,因为所有东西在改成bash之后都可以工作) – 2010-02-16 04:54:07

1

你需要给,如果你的家当行调用SH呼应的绝对路径。或者只是改变shebang使用bash。