물론 이런 것도 할 수 있어요
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 또는 사용자가 입력하는 에코 억제 참조 )y
n