[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 を使用します。