我试图构建一个包含任意数量文件的jar文件,然后执行其他功能。问题在于输出是用空格分隔的字符串,因此jar
函数似乎将其解释为无法定位文件的参数。我构建了这个简单的函数来演示该问题:
makeJar() {
touch SomeFile.class;
touch SomeOtherFile.class;
local FILES=`echo "SomeFile.class SomeOtherFile.class"`;
echo $FILES;
jar cf test.jar $FILES;
}
执行上述功能会导致:
SomeFile.class SomeOtherFile.class : no such file or directory
但是,执行jar cf test.jar SomeFile.class SomeOtherFile.class
是可行的。我猜问题出在与如何将参数传递给jar
函数并试图传递数组有关,但到目前为止没有任何效果。
答案 0 :(得分:1)
尝试一下:
#!/bin/bash
SOURCE=(
SomeFile.class
SomeOtherFile.class
)
jar cf test.jar "${SOURCE[@]}"
答案 1 :(得分:0)
With @chepner's and @UtLox insight I ended up solving it like this since the main problem was zsh
:
makeJar() {
touch SomeFile.class;
touch SomeOtherFile.class;
savedIFS="$IFS"
IFS=' '
local FILES=(`echo "SomeFile.class SomeOtherFile.class"`);
IFS="$savedIFS"
echo $FILES;
jar cf test.jar "${FILES[@]}";
}