私はシェルスクリプトでこの行を理解しようとしています。私はこれがステートメントで見つかった場所$(..)
に出力を実行して挿入することを意味することを知っています。しかし、この括弧の間に何が起こりますか?これは何をしますか?以前の内容とはどのような関係がありますか?これは2行に分けられますか?一般と同じですか?..
$()
\ls
\
\\
\ls
ls
APPCLASSPATH=$CLASSPATH:$({ \
\ls -1 "$VOLTDB_VOLTDB"/voltdb-*.jar; \
\ls -1 "$VOLTDB_LIB"/*.jar; \
\ls -1 "$VOLTDB_LIB"/extension/*.jar; \
} 2> /dev/null | paste -sd ':' - )
ベストアンサー1
3つのコマンドの出力は、それを値に結合するコマンドls
に渡されます。paste
$VOLTDB_VOLTDB"/voltdb-*.jar:$VOLTDB_LIB"/*.jar:$VOLTDB_LIB"/extension/*.jar
メモ:変数$VOLTDB_VOLTDB
sumが$VOLTDB_LIB
拡張され、各コマンドに1つのファイルよりも多くの値がある可能性がありますls
。*
そこに見えますか?これは、左(voltdb-)と右(.jar)の間のすべての項目に展開されるワイルドカードです。
これは次のように一致します。
voltdb-1.jar
voltdb-blah.jar
voltdb-12345.jar
その後、すべてが変数に含まれますAPPCLASSPATH
。
APPCLASSPATH=$CLASSPATH:$VOLTDB_VOLTDB"/voltdb....etc.
貼り付けコマンド
seq
以下は、コマンドを使用して数値シーケンス 1-10 を生成する方法の例です。
$ seq 10 | paste -sd ':' -
1:2:3:4:5:6:7:8:9:10
paste
コマンドが出力をマージして:
コロン()で区切るのがわかります。
次のようにコマンド例を模倣することもできます。
$ { echo "hi1"; echo "hi2"; echo "hi3"; } | paste -sd ':' -
hi1:hi2:hi3
メモ:to -
the Pastコマンドは、STDINから入力を受け取り、入力された各パラメータを印刷するように指示します:
。
他のスイッチを介してデータの背後にある数字に基づいてデータをグループに分割するpaste
こともできます。-
貼り付けの例
以下は2の例です-
。
$ seq 10 | paste - -
1 2
3 4
5 6
7 8
9 10
これは3です-
。
$ seq 10 | paste - - -
1 2 3
4 5 6
7 8 9
10
paste
したがって、1行にいくつの引数を印刷する必要があるかを知らせます。paste
しかし、混同しないでください。作業中の例では、単にSTDINから入力を受け取り、各引数をスペースで区切って印刷します:
。 'が複数与えられたら、一度に2つの引数を許可するという-
意味です。paste
時間、一度に3人、ちょっと待ってください。
一度に2つのパラメータを:
「:」で区切ります。
$ seq 10 | paste -d ':' - -
1:2
3:4
5:6
7:8
9:10
$ seq 10 | paste -d ':' - - -
1:2:3
4:5:6
7:8:9
10::
ただし、スイッチを含めると、パラメータを順番に(シリアル)インポートするように-s
指示します。paste
上記の例のいずれかでこれを使用すると、何が起こるのかを見てください。
一度に2つ:
$ seq 10 | paste -sd ':' - -
1:2:3:4:5:6:7:8:9:10
一度に3つ:
$ seq 10 | paste -sd ':' - - -
1:2:3:4:5:6:7:8:9:10