[Linux Tip] Bash shell script 에서 외따옴표와 쌍따옴표의 비밀
By 양파개발자 SW의 블로그입니다^^ | 2017년 1월 17일 |
자, 여러분 퀴즈입니다.아래 스크립트의 실행 결과를 예측해주세요 ------------------------------------------DIR_PATH="/home/deploy/scripts" # 쌍따옴표FILE_PATH_1="${DIR_PATH}/my.sh" # 외따옴표 사용FILE_PATH_2='${DIR_PATH}/my.sh' # 1번 프린트문echo ${FILE_PATH_1} # 2번 프린트문echo ${FILE_PATH_2}------------------------------------------ 자, 예측이 끝났으면...리눅스 OS를 지금 바로 사용가능하신 분들은 저 코드를 복사해서 실행해 봅시다.chmod 755 로.. 실행권한 주는건.. 굳이 말 안해도 되겟죠..? 여튼...
[bash: if] if 조건문에서 띄어쓰기에 유의
By 반달가면 | 2017년 7월 25일 |
별 것 아닌 기본적인 내용이긴 한데, 스크립트를 만들다가 의외로 실수하는 경우가 종종 있어서 잊지 말자는 의미에서 적어 두기로. if 조건문에서 비교 조건을 지정하기 위해 대괄호([])를 사용하게 되는데, 대괄호와 비교조건 사이에는 반드시 공백이 있어야 한다. 아래의 예시를 보자. str="abc" # 오류 발생! (띄어쓰기 오류) if [[$str="abc"]] then echo "ABC" fi [[abc=abc]]: command not found 대괄호와 조건이 붙을 경우 bash에서 대괄호와 조건이 붙은 전체 문구를 하나의 명령어로 해석하여 처리하려 하므로 오류가 발생하게 된다. 띄어쓰기를 제대로 해 주면 정상 동작한다. # 정상 동작 if [[ $str="ab
[bash: read, while] 공백을 포함한 이름을 가진 파일들에 대한 반복 작업 - 2
By 반달가면 | 2016년 12월 28일 |
예전에 for 반복문을 이용해서 여러 파일에 대한 반복작업을 하는 방식에 대해 쓴 적이 있다(여기로). 파일명에 공백이 포함된 상황을 해결하기 위해 임시 파일을 만들고 sed까지 동원해서 스크립트를 만들었는데, 그보다 훨씬 간편하고 우아한 방법이 있어서 정리해 두기로. 예전에 적었던 while 반복문을 이용한 텍스트 파일 한줄씩 읽기와 같은 방식으로 하면 된다. 파일을 읽는 것이 아니라 ls 또는 find 명령으로 얻은 파일명에 대해 작업을 해야 하므로 파이프(|)를 이용해서 ls나 find의 결과를 while 반복문으로 넘기고, 조건에 read 명령을 적용해서 한줄씩 받아온다. 설명으로는 복잡해 보이나, 예시를 보면 간단하다. 아래의 예시를 보자. find 명령으로 홈 디렉토리(~/) 하위에 있