使用 cygwin 和 git bash 在 Windows 10 上进行 Shell 脚本评估失败

Posted

技术标签:

【中文标题】使用 cygwin 和 git bash 在 Windows 10 上进行 Shell 脚本评估失败【英文标题】:Shell script evaluation failing on windows 10 using cygwin and git bash 【发布时间】:2018-05-12 19:49:06 【问题描述】:
export testval='hdhhdhdh'
echo $testval
if [ ! -d $testval ]; then
echo -e "$REDPlease specify jettyScheduler as an environmental 
variable$RESET"
exit
fi

尽管在脚本中明确设置了 testval,但上述评估失败。 我有一台装有 windows 10 操作系统的新笔记本电脑,以上在 Windows 7 上使用 cygwin 运行良好。在 windows 10 上使用 cygwin 和 git bash 也是如此。有人可以帮忙吗?

【问题讨论】:

您需要提供更多信息,例如您的期望、您得到的、您从哪里运行脚本等等。 您好,脚本是在 Windows 10 OS 上从 cygwin 运行的。事实上,当我使用 if [ -z $testval ] 语法时它开始工作,if [! -d $testval] 无法正常运行? .脚本在上下文中的期望是它不应该打印 echo 语句,因为它应该只在未在环境中设置 testval 时才打印语句,但情况并非如此。让我知道是否需要任何其他补充 【参考方案1】:

你误解了test -d 的作用——它检查目录是否存在,所以你看到的是预期的(假设'hdhhdhdh' 不是目录的名称)。如果您只想检查是否设置了环境,那么test -z(或相反的test -n)是一种方法,正如您所见。

附:如果变量可能包含空格,您还应该养成引用变量 ("$testval") 的习惯。

【讨论】:

以上是关于使用 cygwin 和 git bash 在 Windows 10 上进行 Shell 脚本评估失败的主要内容,如果未能解决你的问题,请参考以下文章

cygwin配置git

cygwin使用Windows下的python

使用Cygwin在Windows上体验Linux的快感

windows资源管理器中配置右键bash here

Cygwin中使用git时无法远程推送(出现DLL文件不兼容)

如何从 Cygwin 在 Jenkins 控制台上显示 bash 脚本执行