export CLASSPATH=$(JARS=(./lib/*.jar); IFS=:; echo "${JARS[*]}")


如果我将此行放在bash_script.sh中并执行

chmod +x bash_script.sh


然后运行

./bash_script.sh


它给出了错误。

Syntax error: "(" unexpected (expecting ")")


我如何能够直接在提示符下运行此程序并获得预期的结果。


$ export CLASSPATH=$(JARS=(./lib/*.jar); IFS=:; echo "${JARS[*]}")


我想知道这种奇怪行为的原因是什么。

最佳答案

确保您的Shell脚本顶部有#!/bin/bash。数组语法VAR=(...)是一种抨击。它不能在普通sh(#!/bin/sh)中工作。

顺便说一句,这看起来像是my answer here中的一行。如果是这样,我鼓励您使用更新的解决方案,而不要使用此解决方案。


  无需手动构建类路径列表。 Java支持包含jar文件的目录的便捷通配符语法。

java -cp "$LIB/*"

  
  (read more)

10-07 13:16