Linux
[ Linux ] bash [ ... ] 와 [[ ... ]]
구티맨
2020. 4. 6. 09:59
if [[ $aug1 == "and" ]];
: aug1 변수가 undefined 또는 empty 이더라도, $aug1 부분이 없어지지 않아 에러가 발생하지 않는다.
if [ $aug1 = "and" ];
: single bracket 에서는 aug1 변수가 undefined 또는 empty 인 경우, 아래와 같이 syntax 에러가 발생하게 된다.
( [: =: unary operator expected )
if [ = "and" ];
single braket에서 이를 방지하기 위해서는 아래와 같이 변수를 따옴표로 싸줘야 한다.
if [ "$aug1" = "and" ];
결론은 [[ ... ]] 에서 더 많은 처리를 해주므로, [ ] 와 "" 를 쓰는것 보다 가급적이면 [[ ... ]] 를 사용하는 것이 더 좋을듯 하다.
출처
https://stackoverflow.com/questions/13617843/unary-operator-expected-error-in-bash-if-condition