jq出力でスペースを区切らないでください。

jq出力でスペースを区切らないでください。

私はjqを使って単語の配列をJavaプログラムのパラメータに変換しています。

それはまるで

arguments=$(jq '.nameField | "-i " + "\"" + . + "\""' file.json)

java .... $arguments  <-- No quotes wrapped around arguments.

期待される出力:Java は で読まなければならず-i "Name 1" -i "Name 2"、 " Name 1" は完全なパラメータで読まなければなりません。

出力を受信:Javaは読み込み中および"Name それぞれエラーを発生させます。1""Name 2"

「名前1」を単一のエンティティとして扱いたいです。

ベストアンサー1

パラメータを配列に保存する必要があります。

.nameField値に改行文字が含まれていないとします。

readarray -t arguments < <(jq -r '.nameField | "-i", .' file.json)

java ... "${arguments[@]}"

このjqコマンドは「-i」を実行し、それぞれの名前を別々の行に配置し、そのreadarray行を配列として読み込みます。

バラよりコマンドを変数に入れようとしましたが、複雑な場合は常に失敗します!


コードが正しく機能するためには必要ですeval java ... $argumentsが、一般的にはお勧めできません。

おすすめ記事