当命令行管道结果不为空或不为空时执行命令

当命令行管道结果不为空或不为空时执行命令

例如:

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上面的命令返回非空或非空值时一样。喜欢:

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

我计划使用 cron 来设置它并解析外部 json(如标志)以运行本地脚本。

答案1

由于命令成功,无论输出如何,您都必须将其保存在变量中,如果变量不为空,则将其传递给脚本。看起来只有当您请求没有值的已知字段(例如.gravatar_id)的数据时,您才会得到空,而null如果您传递未知字段(例如.blabla),您就会得到空。为了适应两者,你可以这样做:

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

相关内容