我开发并维护了一个名为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
当我从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
为什么这不能用于bash脚本?
感谢。
答案 0 :(得分:14)
错误的shebang:
#! /bin/sh
如果它是bash脚本,请使用
#! /bin/bash
Bash有一个内置回声,与/ bin / echo不是100%同意。
答案 1 :(得分:0)
如评论所述,printf
是preferred option,如Git 2.14.x / 2.15(2017年第4季度)所示
printf '%s\n%s' "$FULL_NAME" "$EMAIL"
commit 1a6d468见Torsten Bögershausen (tboegi
)(2017年9月17日)
(Torsten Bögershausen -- tboegi
--合并于commit 1a6d468,2017年9月21日)
test-lint
:echo -e
(或-E
)不可移植
echo
的某些实现支持'-e
'启用选项 以下字符串的反斜杠解释。
另外,他们支持-E
'把它关掉。然而,这些都不是便携式的,POSIX甚至没有提到它们, 许多实施都不支持它们。
检查'
-n
'已在check-non-portable-shell.pl
中完成, 将其扩展为涵盖'-n
','-e
'或'-E
'。