Bash에서 테스트 읽기 실행

Bash에서 테스트 읽기 실행

bash에서 이 명령문을 실행하려고 하는데 계속 오류가 발생합니다.

test [[ "$(read -p 'Install gtodo? ' R ; echo $R)" == "Y" ]] && (sudo apt-get install gtodo) || (echo "gtodo not installed")

올바른 구문은 무엇입니까?

답변1

문제는 당신이 둘 다 사용하고 있다는 것입니다 test.[[

test "$(read -p 'Install gtodo? ' R ; echo $R)" = "Y" && (sudo apt-get install gtodo) || (echo "gtodo not installed")

답변2

당신이 test <expresion>쓰거나 [ <expresion> ]. 귀하의 경우 표현식을 짧게 유지하기 위해 readbefore 를 교체할 수도 있습니다 .test

read -p 'Install gtodo? ' R; test "$R"  == "Y" && (sudo apt-get install gtodo) || (echo "gtodo not installed")

하지만 "Y"만 긍정적인 답변으로 받아들입니다. 다음과 같이 변경하면:

read -p 'Install gtodo? ' R; [ "$R"  == "Y" ] || [ "$R" == "y" ] && (sudo apt-get install gtodo) || (echo "gtodo not installed")

"Y"와 "y"를 긍정적인 답변으로 받아들입니다.

관련 정보