1つの引数がファイル分類結果であるコマンドを呼び出します。

1つの引数がファイル分類結果であるコマンドを呼び出します。

ファイル分類の結果onパラメータを使用してコマンドを呼び出すにはどうすればよいですか?


  npx aws-api-gateway-cli-test \
  --username $username \
  --password $password \
  --method $method \
  --body cat user.json | jq      # <--------- how am I supposed to write this?

上記のコードスニペットで解析エラーが発生しました。


もう一つの試み:

npx aws-api-gateway-cli-test \
      --username $username \
      --password $password \
      --method $method \
      --body ${cat user.json | jq}

エラー:代替エラー


参考にできる作品は次のとおりです。

      npx aws-api-gateway-cli-test \
      --username $username \
      --password $password \
      --method $method \
      --body \{\"test\": \"123\"\}

ベストアンサー1

npx aws-api-gateway-cli-test \
      --username "$username" \
      --password "$password" \
      --method "$method" \
      --body "$(cat user.json)"

ksh、zsh、またはbashでは、次のこともできます。

npx aws-api-gateway-cli-test \
      --username "$username" \
      --password "$password" \
      --method "$method" \
      --body "$(<user.json)"

$(cmd...)cmd、コマンド置換と呼ばれ、出力を拡張して末尾の改行を削除し、bashすべてのNULバイトの場合。これは、NULを含まないべきJSON(外部コマンドのパラメータはNULを含めることはできません)に適しており、改行文字を含むJSONデータの末尾のスペースは重要ではありません。

コマンド置換のための特定の構文は、1980年代初めのkshに由来し、sh1990年代初めのPOSIXによって標準化されているため、すべてのPOSIX様シェルでサポートされています。

この機能自体は1970年代後半にBourne Shellで始まり​​ましたが、面倒な`cmd`構文を使用しました。(t)csh次に、その構文も使用します。rc/シェルでは、es構文は`cmdまたはです`{more complex cmd}。 Fishは(...)最新バージョンでのみサポートされています$(cmd)(二重引用符の中でも使用できます)。

-like シェルではsh引用符がなく、リストのコンテキストでは、$(cmd)like は$usernameSplit+glob (zsh でのみ分割) の影響を受けます。パラメータとして渡すには引用符で囲む必要があります。

詳細については、$(<file)次を参照してください。Bashのファイル読み取りコマンドの置き換えについて

おすすめ記事