반응형

쉘스크립트 작업을 하다가 정말 별거 없는 스크립트인데 실행시켜보면 command not found가 뜬다.

그것도 변수명인데 해당 변수명의 command를 찾지 못하겠다니???

 

RECENTFILE : command not found

#!/bin/sh

RECENTFILE =`hadoop fs -ls -R /user/irteam/dmp/demo/data/ | grep "^d" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8`

echo "${RECENTFILE}"

잉??? RECENTFILE은 변순인데...왜 커맨드로 인식해???

 

문제는 RECENTFILE뒤에 공백....(공백을 제거해준다.)

RECENTFILE=`hadoop fs -ls -R /user/irteam/dmp/demo/data/ | grep "^d" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8`

 

만약 처음 처럼 공백을 넣게 되면 bash는 RECENTFILE이라는 명령을 뒤에 있는 문자열을 매개변수로 실행하려 한다.

ex) RECENTFILE = 'foo' (RECENTFILE 옆에 한번 띄고 = 옆에 한 번 띄게 되면 RECENTFILE이라는 커맨드를 '=', 'foo' 두 개 인자와 함께 실행하려 할 것이다.)

 

따라서 변수선언시에는 뒤에 공백을 주어 bash에서 command로 인식하지 않도록 하자.

반응형

+ Recent posts