사용자 입력에 응답하는 간결한 방법은 무엇입니까?

사용자 입력에 응답하는 간결한 방법은 무엇입니까?

물론 이런 것도 할 수 있어요

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

그러나 첫 번째 단계를 건너뛰고 다음과 같은 작업을 더 수행할 수 있는 방법이 있습니까(이상적으로는 서브셸이 필요하지 않음):

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( an 또는 사용자가 입력하는 에코 억제 참조 )yn

관련 정보