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

如果我把这条线放在 a 中bash_script.sh并做

chmod +x bash_script.sh

然后运行

./bash_script.sh

它给出了错误。

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

我如何能够直接从提示符运行这个东西并获得预期的结果。作为

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

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

4

2 回答 2

1

添加#!/bin/bash为第一行以强制它在 bash shell 中运行。

于 2013-08-12T21:40:16.617 回答
1

确保你有#!/bin/bash在你的 shell 脚本的顶部。数组语法VAR=(...)是一种 bash 主义。它不适用于普通的 sh ( #!/bin/sh)。

顺便说一句,这看起来像是我在这里的回答中的一条线。如果是这样,我鼓励您使用我更新的解决方案而不是这个。

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

java -cp "$LIB/*"

(阅读更多)

于 2013-08-12T21:40:58.367 回答