在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;
Run Code Online (Sandbox Code Playgroud)
如何在shell中进行这样的多行分配?
这么多皮肤的方法很多.
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;
'
Run Code Online (Sandbox Code Playgroud)
根据您的问题,这可以让您在变量中进行多行输入.
但是如果你打算在shell脚本中使用这些文件,你需要告诉我们如何,以便我们能够提出适当的答案,而不是让我们猜测.要在shell脚本中使用,文件需要由有用的东西分隔.
你问,"我怎样才能在shell中进行这样的多行分配",但是你的例子中的赋值实际上是一个SINGLE行,^每个输入行的末尾都否定了下面的换行符(没有转义它,如另一个答案所示) .
我在这个答案中的解决方案是多线的,但你需要解释更多关于你需要它的内容,以确定什么是有用的.
例如,如果您需要单步执行将使用该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
Run Code Online (Sandbox Code Playgroud)
小智 5
正如我将展示的,这个问题隐式地请求单行输出。
@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%
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
$ ./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;
Run Code Online (Sandbox Code Playgroud)
或者
SOMEVAR=$( cat <<EOF
value1
value2
value3
value4
value5
EOF
)
Run Code Online (Sandbox Code Playgroud)