コマンドラインパイプラインの結果が空でないか空である場合のコマンドの実行

コマンドラインパイプラインの結果が空でないか空である場合のコマンドの実行

たとえば、

curl -s 'https://api.github.com/users/lambda' |\
  jq -r '.name'

戻り値"名前json属性。属性が空または存在しない場合、コマンドは次を返します。無効または '':

curl -s 'https://api.github.com/users/lambda' |\
 jq -r '.blabla'

python main.py上記のコマンドがNULLでないかNULL以外の値を返すように、コマンドを実行する必要があります。良い:

curl -s 'https://api.github.com/users/lambda' |\
 jq -r '.name' | ..... python main.py

cronを使用してこれを設定し、外部json(フラグなど)を解析してローカルスクリプトを実行する予定です。

ベストアンサー1

コマンドが成功したため、出力は何でも変数に保存する必要があり、変数が空でない場合はスクリプトに渡す必要があります。値がない既知のフィールド(例:).gravatar_idに対してデータを要求する場合にのみnullを取得し、null不明なフィールド(例.blabla:)を渡すとnullを取得するようです。両方を受け入れるには:

var=$(curl -s 'https://api.github.com/users/lambda' | jq -r '.name')
[ "$var" != "null" -a -n "$var" ] && printf '%s\n' "$var" | python main.py

おすすめ記事