[解決済み] bashの変数をjqに渡す
2022-04-22 07:18:56
質問
から特定の値を取得するスクリプトを書きました。
file.json
. jq に値を指定すると動作します。
select
が、この変数は機能しないようです(あるいは使い方がわからない)。
#!/bin/sh
#this works ***
projectID=$(cat file.json | jq -r '.resource[] | select(.username=="[email protected]") | .id')
echo "$projectID"
[email protected]
#this does not work *** no value is printed
projectID=$(cat file.json | jq -r '.resource[] | select(.username=="$EMAILID") | .id')
echo "$projectID"
解決方法は?
シェル変数(EMAILID)をjq変数として渡すことも考えてみましょう(ここでは説明のためにEMAILIDも)。
projectID=$(jq -r --arg EMAILID "$EMAILID" '
.resource[]
| select(.username==$EMAILID)
| .id' file.json)
ポストスクリプト
ちなみに、もう一つの可能性は、jqの
env
関数を使って環境変数にアクセスすることができます。 例えば、次のような一連のbashコマンドを考えてみましょう。
[email protected] # not exported
EMAILID="$EMAILID" jq -n 'env.EMAILID'
出力はJSON文字列です。
"[email protected]"
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] 環境変数の値にアクセスする方法
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで変数が設定されているかどうかを確認する方法は?
-
[解決済み】Bashでファイル名と拡張子を抽出する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] BeautifulSoupでJSONオブジェクトから特定の値をパースする
-
[解決済み] JSONDecodeError: 期待される値:行1列1
-
[解決済み] 複数の配列を持つJSONオブジェクトを作るにはどうしたらいいですか?
-
[解決済み] REST API - "Accept: application/json" HTTP ヘッダーを使用する
-
[解決済み] kubectl get pods の json フォーマットの出力を jsonpath でパースする方法
-
[解決済み] jqを使用して、オブジェクト内の変数の値に基づいてオブジェクトを選択します。
-
[解決済み】GoのJSONマーシャルでJSONのキー名を小文字にする
-
[解決済み] どのようにjqを使用して2つのファイルから2つのJSONオブジェクトをマージするには?
-
[解決済み] Mongo コレクションを JSON 形式にダンプする
-
[解決済み] ASP.NETでWebAPIやMVCを使ってJSONを返す。