[jq] --arg でシェル変数を文字列として渡す

作成日: 2026年09月13日

jq の --arg オプションを使用すると、シェル変数の値を jq のフィルター内で文字列として利用できます。

下記の例では、シェル変数 shell_name の値を jq に渡して JSON の name プロパティに設定しています。

shell_name="Taro"
echo '{}' | jq --arg name "$shell_name" '.name = $name'

実行結果は下記のとおりです。

{
  "name": "Taro"
}

説明

--arg name "$shell_name" では、シェル変数 $shell_name の値を jq 側の変数 $name として渡しています。

--arg で渡した値は文字列として扱われます。そのため、数値を渡した場合でも文字列になります。

shell_value=123
echo '{}' | jq --arg value "$shell_value" '.value = $value'

実行結果は下記のとおりです。

{
  "value": "123"
}

数値や JSON として値を渡したい場合は、--argjson を使用します。

jq