echo -e在终端中工作但不在bash脚本中工作

Gaz*_*ler 11 bash shell

我开发并维护了一个名为Githug的ruby gem,我正在尝试为它编写一个自动化测试脚本.Githug基本上操纵一个目录,将它放入一个工作git存储库的不同状态,你可以执行git命令来"解决"这个级别.

其中一个级别会询问您的git配置详细信息,我正在执行以下操作:

#! /bin/sh
# ...snip
#level 4
FULL_NAME=$(git config --get user.name)
EMAIL=$(git config --get user.email)
echo -e "$FULL_NAME\n$EMAIL" | githug
Run Code Online (Sandbox Code Playgroud)

当我从bash脚本执行时,它(echo -e)不起作用.但是当我从终端运行它时它会这样做.

FULL_NAME=$(git config --get user.name)
EMAIL=$(git config --get user.email)
echo -e "$FULL_NAME\n$EMAIL" | githug
********************************************************************************
*                                    Githug                                    *
********************************************************************************
What is your name? What is your email?
Congratulations, you have solved the level
Run Code Online (Sandbox Code Playgroud)

为什么这不适用于bash脚本?

谢谢.

use*_*own 15

错误的shebang:

#! /bin/sh
Run Code Online (Sandbox Code Playgroud)

当它是一个bash脚本时,请使用

#! /bin/bash
Run Code Online (Sandbox Code Playgroud)

Bash有一个buildin echo,与/ bin/echo不是100%的标识符.

  • 顺便说一下,不要使用`echo -e`或`-n`.使用`printf`,`printf'%b'`,或使用bash或ksh,`$''特殊引号. (8认同)