私は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
が、一般的にはお勧めできません。