首页 > 解决方案 > Zsh 中的 DRYer 提示和分配

问题描述

我想做一些与此相同的事情:

[[ -z "$TICKET_NUMBER" ]] && read "TICKET_NUMBER?Ticket Number? "

但这更简洁,沿着这些思路(但实际上有效):

: ${TICKET_NUMBER:=$(read "TICKET_NUMBER?Ticket: ")}

我查看了Zsh 文档以查看是否有办法将输入传递read给 STDOUT,但似乎没有什么可以做到这一点。

理想的情况是通过尽可能少的仪式和重复直接传递值的命令。想象一个get_value命令:

: ${TICKET_NUMBER:=$(get_value "Ticket: ")}

标签: zsh

解决方案


上一条命令的最后一个参数存储在_参数中,因此您可以将参数捕获给-v运算符。

test -v TICKET_NUMBER || read "$_?Ticket? "

推荐阅读