Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 奇怪的行为:导出类路径=$(JARS=(./lib/*.jar);IFS=:;echo";${JARS[*]}";) export CLASSPATH=$(JARS=(./lib/*.jar);IFS=:;echo“${JARS[*]}”)_Java_Bash - Fatal编程技术网

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

Java 奇怪的行为:导出类路径=$(JARS=(./lib/*.jar);IFS=:;echo";${JARS[*]}";) export CLASSPATH=$(JARS=(./lib/*.jar);IFS=:;echo“${JARS[*]}”),java,bash,Java,Bash,如果我把这一行放在一个bash_script.sh中 chmod +x bash_script.sh 然后跑 ./bash_script.sh 它给出了错误 Syntax error: "(" unexpected (expecting ")") 我如何能够直接从提示符运行这个东西并获得预期的结果。 作为 $export CLASSPATH=$(JARS=(./lib/*.jar);IFS=:;echo“${JARS[*]}”) 我想知道这种奇怪行为的原因是什么。添加#/bin/bash

如果我把这一行放在一个
bash_script.sh

chmod +x bash_script.sh
然后跑

./bash_script.sh
它给出了错误

Syntax error: "(" unexpected (expecting ")")
我如何能够直接从提示符运行这个东西并获得预期的结果。 作为

$export CLASSPATH=$(JARS=(./lib/*.jar);IFS=:;echo“${JARS[*]}”)
我想知道这种奇怪行为的原因是什么。

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

确保您有
#/bin/bash
位于shell脚本的顶部。数组语法
VAR=(…)
是一种bash语法。它在纯sh(
#!/bin/sh
)中不起作用

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

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

java -cp "$LIB/*"


您的脚本是否显式具有
#/bin/bash
在顶部?您的交互式命令shell是什么?它在命令提示符下或作为脚本执行时(尽管没有结果)不出现错误的情况下对我有效。添加#/顶部的bin/bash确实让它对我有用,因为它帮助了你,我添加了它作为一个答案。即使你在shebang行中加了一行,有些人仍然会尝试用
sh bash_script.sh
来调用你的脚本,所以我建议也加一个
set+o posix
,以明确地禁用posix兼容性。不过,最好的方法是避免bash主义,并结合使用
find
paste
来构建类路径。