响应用户输入的简洁方式?

响应用户输入的简洁方式?

当然你可以做这样的事情

read var; if [[ $var = 'y' ]]; then echo "Yes"; fi

但是有没有办法跳过第一步并做一些更像这样的事情(理想情况下不需要子shell):

if [[ $(read var) = 'y' ]]; then echo "Yes"; fi

当然,除非您添加,否则上面的方法不起作用echo,但我正在寻找比这更干净和简单的东西:

if [[ $(read var; echo "$var") = 'y' ]]; then echo "Yes"; fi

如果这可行的话那就太理想了:

if [[ read = 'y' ]]; then echo "Yes"; fi

答案1

如何使用函数来完成您需要的事情:

user_input () {
    read var
    echo $var
}
if [ "$(user_input)" = 'y' ]; then echo "Yes"; fi

在顶部,我定义了一个名为 user_input 的函数,它将读取值,然后将其回显。然后 if 语句能够获取该值并检查它是否为“y”。我将其$(user_input)用引号引起来,以防用户输入空格,这样脚本就不会出错。

答案2

不确定这对于您的想法是否仍然太长:

read foo && [ "$foo" = 'y' ] && echo 'Yes'

答案3

zsh

read -q && echo yes

(另请参阅抑制您键入的或的-s回声)。yn

相关内容