奇怪的行为:导出CLASSPATH = $(JARS =(。/ lib / * .jar); IFS =:; echo“$ {JARS [*]}”)

时间:2013-08-12 21:27:15

标签: java bash

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[*]}")

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

顺便说一句,这看起来像是来自my answer here的一条线。如果是这样,我建议您使用我更新的解决方案,而不是这个。

  

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

java -cp "$LIB/*"
     

(read more)