2017-03-01 7 views
0

다음은 입력을 읽는 mwe이고 문자 'a'와 비교하는 입니다. 호출 할 때 제대로 작동합니다.스크립트가 소스 일 때 비교가 실패한 경우

read -n 1 inp 
if [ $inp = 'a' ] 
then 
    echo "Hello" 
fi 

그러나, 소스 때 오류가 있습니다 :

스크립트는 zsh하지 bash과 실행에서 소스 때문에이 문제가 발생
parse error: condition expected: = 
+0

은 내부에 따옴표에 변수를 동봉'[...]'. – codeforester

답변

2

.

소스 스크립트는 항상 shebang에 관계없이 소싱을 수행하는 셸로 실행됩니다. 스크립트는 bash 용으로 작성되었으며 zsh과 호환되지 않으므로 실패합니다.

등가 zsh 코드는 다음과 같습니다

read -k 1 inp 
if [ "$inp" = 'a' ] 
then 
    echo "Hello" 
fi 
+0

필자는 zsh를 사용하고 있다고 언급해야합니다. :). 고맙습니다. – Sandeep