반응형
쉘스크립트 작업을 하다가 정말 별거 없는 스크립트인데 실행시켜보면 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로 인식하지 않도록 하자.
반응형
'Programming > Linux' 카테고리의 다른 글
[ 리눅스 ] tomcat connector configure시 C compiler error (0) | 2020.03.23 |
---|---|
docker기반 데이터 시각화툴 Superset 설치하기 (리눅스) (0) | 2020.02.03 |
telnet 명령어 사용법 네트워크 반응으로 보는 acl 확인 (0) | 2019.11.05 |
[ 쉘스크립트 ] shell script 변수 문자열 특정 문자열 기준 자르기 (0) | 2019.05.15 |
쉘스크립트에서 wc -l로 파일 line수 읽어 변수에 담기 (0) | 2019.04.30 |