Zsh中的DRYer提示和分配

时间:2018-07-14 02:27:49

标签: zsh

我想做一些能完成与做同样的事情的事情:

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

但是,按照这些观点,它更加简洁(但实际上有效):

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

我查看了Zsh docs for read,看是否有一种方法可以将输入传递到read到STDOUT,但是看起来没有什么可以做到的。

理想的情况是使用一些命令,以尽可能少的仪式和重复直接传递值。想象一下get_value命令:

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

这有点丑陋,但是可以用:

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

这当然不是我要追求的理想,但可能离目标还近了一步。