当然你可以做这样的事情
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
回声)。y
n