在Windows上的.cmd文件中我做了:
SET JARS=^
./lib/apache-mime4j-0.6.jar;^
./lib/apache-mime4j-0.6.jar;^
./lib/bsh-1.3.0.jar;^
./lib/cglib-nodep-2.1_3.jar;^
./lib/commons-codec-1.6.jar;^
./lib/commons-collections-3.2.1.jar;^
./lib/commons-exec-1.1.jar;^
./lib/commons-io-2.0.1.jar;^
./lib/commons-io-2.3.jar;
如何在shell中进行这样的多行分配?
答案 0 :(得分:7)
为这只猫皮肤涂抹的方法很多。
JARS='
./lib/apache-mime4j-0.6.jar;
./lib/apache-mime4j-0.6.jar;
./lib/bsh-1.3.0.jar;
./lib/cglib-nodep-2.1_3.jar;
./lib/commons-codec-1.6.jar;
./lib/commons-collections-3.2.1.jar;
./lib/commons-exec-1.1.jar;
./lib/commons-io-2.0.1.jar;
./lib/commons-io-2.3.jar;
'
根据您的问题,这可以让您在变量中获得多行输入。
但是如果你打算在shell脚本中使用这些文件,你需要告诉我们如何,以便我们能够提出适当的答案,而不是让我们猜测。要在shell脚本中使用,文件需要用有用的东西分隔。
你问,“我怎样才能在shell中进行这样的多行分配”,但是你的例子中的赋值实际上是一个SINGLE行,每个输入行末尾的^
否定了下面的换行符(< em> not 逃避它,正如另一个答案所暗示的那样。)
我在这个答案中的解决方案是多线的,但你需要解释更多关于你需要它的内容,以便确定什么是有用的。
例如,如果您需要单步执行将使用jar
命令处理的文件列表,您可能需要具有以下内容:
#!/bin/sh
JARS='
./lib/apache-mime4j-0.6.jar
./lib/bsh-1.3.0.jar
...
'
set $JARS
for jarfile in "$@"; do
jar xf "$jarfile" ...
done
答案 1 :(得分:4)
问题隐含地请求单行输出,正如我将要展示的那样。
@SET JARS=^
./lib/apache-mime4j-0.6.jar;^
./lib/apache-mime4j-0.6.jar;^
./lib/bsh-1.3.0.jar;^
./lib/cglib-nodep-2.1_3.jar;^
./lib/commons-codec-1.6.jar;^
./lib/commons-collections-3.2.1.jar;^
./lib/commons-exec-1.1.jar;^
./lib/commons-io-2.0.1.jar;^
./lib/commons-io-2.3.jar;
@echo %JARS%
c:\home\Steven\Desktop>test.bat
./lib/apache-mime4j-0.6.jar;./lib/apache-mime4j-0.6.jar;./lib/bsh-1.3.0.jar;./li
b/cglib-nodep-2.1_3.jar;./lib/commons-codec-1.6.jar;./lib/commons-collections-3.
2.1.jar;./lib/commons-exec-1.1.jar;./lib/commons-io-2.0.1.jar;./lib/commons-io-2
.3.jar;
JARS=\
'./lib/apache-mime4j-0.6.jar;'\
'./lib/apache-mime4j-0.6.jar;'\
'./lib/bsh-1.3.0.jar;'\
'./lib/cglib-nodep-2.1_3.jar;'\
'./lib/commons-codec-1.6.jar;'\
'./lib/commons-collections-3.2.1.jar;'\
'./lib/commons-exec-1.1.jar;'\
'./lib/commons-io-2.0.1.jar;'\
'./lib/commons-io-2.3.jar;'
echo "$JARS"
$ ./test.sh
./lib/apache-mime4j-0.6.jar;./lib/apache-mime4j-0.6.jar;./lib/bsh-1.3.0.jar;./li
b/cglib-nodep-2.1_3.jar;./lib/commons-codec-1.6.jar;./lib/commons-collections-3.
2.1.jar;./lib/commons-exec-1.1.jar;./lib/commons-io-2.0.1.jar;./lib/commons-io-2
.3.jar;
答案 2 :(得分:3)
或者
SOMEVAR=$( cat <<EOF
value1
value2
value3
value4
value5
EOF
)