【问题标题】:Scala - SBT setup, bash: syntax error near `=~'Scala - SBT 设置,bash:`=~' 附近的语法错误
【发布时间】:2018-09-27 22:33:03
【问题描述】:

试图在我的家用电脑 windows 10 上设置 scala 和 sbt 来练习。

已安装:

  • Scala 版本 2.12.4
  • Sbt 1.1.4
  • java版本“9.0.4”
  • Java(TM) SE 运行时环境(内部版本 9.0.4+11)
  • Java HotSpot(TM) 64 位服务器 VM(内部版本 9.0.4+11,混合模式)

在 git bash 中运行以下命令(在管理员中)

sbt new scala/projectname.g8

收到此错误

/c/Program Files (x86)/sbt/bin/sbt-launch-lib.bash: line 126: conditional binary operator expected
/c/Program Files (x86)/sbt/bin/sbt-launch-lib.bash: line 126: syntax error near `=~'
/c/Program Files (x86)/sbt/bin/sbt-launch-lib.bash: line 126: `  elif [[ "${JAVA_OPTS}" =~ Use.*GC ]] || [[ "${JAVA_TOOL_OPTIONS}" =~ Use.*GC ]] || [[ "${SBT_OPTS}" =~ Use.*GC ]] ; then'
/c/Program Files (x86)/sbt/bin/sbt: line 157: run: command not found

我已尝试重新安装所有依赖项,修复 sbt 安装。
当我转到目录时,文件被隐藏了。

来自 c/Program Files (x86)/sbt/bin/sbt-launch-lib.bash 第 120 - 133 行的代码:

get_gc_opts () {
  local older_than_9=$(( $java_version < 9 ))

  if [[ "$older_than_9" == "1" ]]; then
    # don't need to worry about gc
    echo ""
  elif [[ "${JAVA_OPTS}" =~ Use.*GC ]] || [[ "${JAVA_TOOL_OPTIONS}" =~ Use.*GC ]] || [[ "${SBT_OPTS}" =~ Use.*GC ]] ; then
    # GC arg has been passed in - don't change
    echo ""
  else
    # Java 9+ so revert to old
    echo "-XX:+UseParallelGC"
  fi
}

非常感谢您对此的任何帮助!

已解决:bash 版本 >3.0 不支持 =~ 运算符。重新安装git bash for windows 解决了这个问题。

这些命令也适用于 jdk 1.8 或更高版本。

【问题讨论】:

标签: windows bash scala sbt git-bash


【解决方案1】:

你可以试试这个(以任何顺序):

【讨论】:

  • 重新安装两者都解决了这个问题。 git 客户端现在看起来有很大不同,所以我认为很可能是这个。将调查并发布解决方案。
【解决方案2】:

这里没有理由使用 bash-only 语法。以下内容适用于所有符合 POSIX 的 shell:

#!/bin/sh

seen=0
for var in "$JAVA_OPTS" "$JAVA_TOOL_OPTIONS" "$SBT_OPTS"; do
  case $var in
    *Use*GC*) seen=1; break ;;
  esac
done

[ "$seen" = 0 ] && echo "-XX:+UseParallelGC"

【讨论】:

  • 不幸的是,这只是 bash 代码的一小段摘录,是 bash 特定语法中断的第一行。与 SBT 一起分发的启动器脚本大约有 500 行,其中充满了棘手的版本检查和模式匹配代码,我不确定 OP(或其他任何人)是否有精力将其重写为完全符合 POSIX。跨度>
猜你喜欢
  • 1970-01-01
  • 2014-02-26
  • 2018-12-18
  • 2014-01-20
  • 2015-12-11
  • 2014-11-13
  • 2021-07-29
  • 2014-06-04
  • 1970-01-01
相关资源
最近更新 更多