2012-06-27 3 views
6

は私が行います複数行の割り当ては、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; 

は、どのように私は貝に、このような複数行の割り当てを行うことができますか?

答えて

4

この質問は暗黙のうちにの単線出力を要求します。

TEST.BAT

@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% 

出力

test.sh

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; 
+0

@GordonDavisson:あなたはjarコマンドで処理されるファイルのリストをステップ実行する必要がある場合は

たとえば、あなたのようなものを持っている場合があります。セミコロンに注意を払わなかった。それはすべての要素について引用する必要があります。 – Shahbaz

1

または代わりに

SOMEVAR=$(cat <<EOF 
value1 
value2 
value3 
value4 
value5 
EOF 
) 
+0

これは私に与えます:./parser.sh:1行目:予期せぬEOFを探している間に ') ' ./parser.sh:56行目:構文エラー:予期しないファイルの終わり –

+0

は、 hmmm – matcheek

+0

閉じるEOFは字下げできないためです。 **編集**あなたはすでにそれを持っています。 :) – ormaaj

5

多くの方法でこの猫をスキンします。

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; 
' 

これにより、変数ごとに質問ごとに複数行の入力が得られます。

しかし、これらのファイルをシェルスクリプトで使用する予定がある場合は、私たちに推測するのではなく、適切な答えを出す方法を教えてください。シェルスクリプトで使用するには、ファイルを便利なもので区切る必要があります。

あなたは「私は貝に、このような複数行の割り当てを行うことができますどのように」、尋ねたが、あなたの例では、割り当ては、次の改行(ないエスケープを否定各入力行の末尾に^で、実際は単線ですそれは、別の答えが示唆したように)。

この回答の私の解決策は複数行ですが、何が役立つのかを判断するために必要なことについてさらに説明する必要があります。はい、ああ、

#!/bin/sh 

JARS=' 
./lib/apache-mime4j-0.6.jar 
./lib/bsh-1.3.0.jar 
... 
' 

set $JARS 
for jarfile in "[email protected]"; do 
    jar xf "$jarfile" ... 
done 
+1

echo $ JARSと言うと、結果の文字列はスペースで区切られています。 –

+3

はい。そして、 'echo" $ JARS "'と言うと、指定したように出力がフォーマットされます。あなたは[Bashで引用符が使われる方法](http://mywiki.wooledge.org/Quotes)に細心の注意を払う必要があります。彼らは非常に重要です。 – ghoti

+0

各文字列の最後に改行文字を付ける必要がありますか? –

関連する問題