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=(...)
是一种 bash-ism。它不会在普通sh(#!/bin/sh
(中工作。
顺便说一下,这看起来像我在这里回答的一行。如果是这样,我鼓励您使用我更新的解决方案而不是这个。
无需手动构建类路径列表。Java 支持包含 jar 文件的目录的便捷通配符语法。
java -cp "$LIB/*"
(阅读更多(
添加#!/bin/bash
作为第一行,以强制它在 bash shell 中运行。