본문 바로가기

CS/Shell scripts12

[bash] 리눅스 쉘 스크립트(shell script) 문자열 바꾸는 방법 오늘은 script(bash) 에서 문자열을 치환 즉, 문자열을 원하는 문자열로 바꾸는 방법을 알아보려고 한다. 자주 사용하는 방법인데 이상하게 자꾸만 까먹는다... 아마 예전에 포스팅 한 내용이 있을지도 모르겠지만 그래도 한번 더 연습삼아 내용을 정리해 본다. Shell Parameter Expansion 활용 우선, 가장 쉬운 방법은 echo 를 활용하는 방법이다. shell script 에 변수를 선언하고 echo 출력 시 아래 패턴을 이용하여 문자열 변경이 가능하다. ${parameter/pattern/string} 아래처럼 예제 스크립트를 한번 작성해 보았다. #!/bin/bash output="Hello my world" name="Kim" echo "${output/my/"$name"}" 기.. 2022. 8. 8.
[쉘스크립트/csh] Linux csh 에서 파일 유무 확인하는 방법 / 일반 파일 존재 확인 / 파일 있는지 확인하는 조건 문 작성 Linux 환경에서 개발/운영을 하다보면 shell script를 이용해 파일 유무를 확인해야 하는 상황이 정말 많이 발생한다. 현재 나의 개발환경에서는 csh을 많이 쓰고있으며, 파일 유무를 정말 거의 매일 사용하다시피 한다. 이 기능.. 더 이상 검색하지 않기 위해.. 정리해 본다. 일단 기본적인 환경을 구성하기 위한 준비사항은 다음과 같다. 1. 확인하고자 하는 파일 2. 파일을 확인하는 스크립트 touch 명령어를 통해 테스트용 파일을 생성해 준다. touch a ls -l 파일 생성이 확인되면 csh 스크립트 파일을 만들어 아래와 같은 내용으로 테스트를 진행한다. ( shebang 은 꼭 써 주도록 하자. ==> #!/bin/csh ) vim b.csh #!/bin/csh if ( -e a ) .. 2022. 2. 14.
[오늘의 업무/Bash] Shell 문자열에서 원하는 부분만 치환/변경 하는 방법 안녕하세요 일상창고입니다. 회사에서 겪은 일들을 정리하는 '오늘의 업무' 입니다. 회사 업무중에 코딩스킬이나, 다시한번 연습해서 다음에 잊고싶지 않은 내용들을 정리하고 있습니다. 쉘 스크립트 만들다 보면 원하는 문자만 바꾸고 싶은 경우가 종종 발생합니다. 뭐.. vim 으로 수정 할 수 있는 고정 문자열들이야 :%s 를 사용해서 바꾸면 되겠지만.. 특정 프로그램의 output으로 나오는 문자는 동적으로 바꿔야 하는데 이럴 때 좀 고민이 되더라구요. 이럴 때 제가 사용하는 명령어는 'sed' 입니다. 아래 예시를 보면 이해하기 쉬울 것 같습니다. #/bin/bash output="test/test.sh" echo $output output=`echo $output | sed 's/\//_/g'` echo .. 2021. 10. 7.
[Bash] 배쉬쉘에서 파일/디렉토리 유무 확인하기 오늘은 업무 중 Bash script를 사용하다가 파일 존재 유무 확인이 필요해서 file check script를 작성했는데요, 앞으로도 Bash shell 을 이용한 파일체크가 잦아질 것 같아서 따로 정리하려 합니다. File check 하는 조건문 만들기 우선 파일의 유무를 확인하기 위해서는 아래와 같은 조건문을 사용 하면 됩니다. 211006.sh #!/bin/bash FILE="./test" if [ -f "$FILE" ]; then echo "$FILE exists." else echo "$FILE not found." fi if [[ -f "$FILE" ]]; then echo "$FILE exists." else echo "$FILE not found." fi 실행결과 $ ./211006... 2021. 10. 6.
[bash] 스크립트 에서 signal 캐치하는 방법 업무할때 자주 쓰는데도 불구하고 자꾸만 까먹어서 정리한다. bash script 에서는 trap 을 이용해서 signal을 가로챌 수 있다. 다만 여기서, SIGKILL 은 가로채는 동작이 불가능 함을 미리 알린다. // 아래처럼 trap을 걸면 된다. trap 'action' 1 2 3 trap 'action' SIGINT trap 'action' SIGTERM SIGINT 스크립트 예시를 하나 만들어 보자. sigint 시그널이 왔을 때 프로그램을 종료하는 스크립트 이다. #!/bin/bash function sigint() { echo "SIGINT function!" exit 0 } trap sigint SIGINT while [ 1 ] do echo "I'm in a loop .." sleep .. 2021. 8. 1.
[Bash] Bash 스크립트에서 argument로 Option 을 처리 하는 방법 업무를 하다보면 여러가지 스크립트를 만들 일이 생긴다. 나는 매번 만드는데도 ... 자꾸만 이것저것 찾아보고 만들게 되는데 내가 필요한 부분만 정리해 두면 그러지 않아도 될 것 같아서 가볍게 argument / option 을 처리할 수 있는 script를 만들어 보려고 한다. 우선 bash script 파일 하나를 만들고 실행 권한을 줬다. vim 210707.sh chmod 775 210707.sh shebang 을 bash로 적고 argument를 받는 코드를 아래와 같이 작성해서 출력 해 보았다. #!/usr/bin/bash echo $@ # 저장 후 실행 ./210707.sh 1 2 3 4 5 1 2 3 4 5 $@ 를 이용해서 실행파일 뒤에 따라오는 argument를 출력해 주는 방법은 알았다.. 2021. 7. 8.
[Bash] 쉘 스크립트 출력 시 개행이 안되는 경우 해결방법 Bash 를 사용하면서 각총 명령의 출력을 변수에 잠시 넣었다가 다시 출력해서 가공하는 경우가 있다. 이런 경우 echo $변수명 을 많이 사용하게 되는데, 그냥 명령어를 쳤을 때에는 개행이 되는데 변수에 넣고나니 개행이 안되었다. 이리저리 찾아보다가 아래와 같은 해결방법을 찾았는데 내용은 다음과 같다. 문제 : 파일을 cat으로 출력해서 변수에 저장 후 echo로 다시 출력하는 경우, 결과가 상이함. [ test 파일 ] 1 2 3 4 5 6 7 8 9 10 [ script 파일 ] #!/usr/bin/bash cat test output=`cat test` echo $output [ 출력결과 ] 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 해결 : double quota.. 2021. 6. 24.
Linux 명령어 'awk' 로 원하는 부분만 출력하기 - 1 AWK AWK(오크;Aho Weinberger Kernighan)는 유닉스에서 처음 개발된 일반 스크립트 언어이다. AWK의 기본 기능은 텍스트 형태로 되어있는 입력 데이터를 행과 단어 별로 처리해 출력하는 것이다. AWK라는 이름은 이 스크립트 언어를 만든 앨프리드 에이호, 피터 와인버거, 브라이언 커니핸 세 명의 성의 앞글자를 따서 붙여졌다. 출처 : 위키피디아 ( https://ko.wikipedia.org/wiki/AWK ) 업무를 하다보면 정말 자주쓰는 명령어인데 .. 계속해서 잘못쓰고, 또 찾아보고를 반복한다. 정말 자주쓰는 경우가 process id를 출력해서 kill을 해준다거나, 특정 파일에서 원하는 부분 만 출력해서 뽑아내고 싶을때 사용한다. 아래처럼 프로세스를 조회하는 쉘 스크립트를 .. 2021. 6. 24.
[csh] c shell 에서 덧셈 구현 방법 업무를 하다보면 Shell script 에서도 사칙연산이 필요한 경우가 있다. 나는 보통 원하는 로그를 출력하고 싶다거나, shell script를 이용해서 간단한 monitoring tool 을 만들고 싶을 때 필요했는데 cshell에서 이런 연산들이 어떻게 구현되는지 정리해 봤다. 우선 의식의 흐름대로 작성해 봤다. #!/usr/bin/csh set i = 1 echo $i # i 더해보면 2가 될 것 같다. set i = i + 1 echo $i 다음과 같은 결과를 얻었다. 1 set: Variable name must begin with a letter. 그러고보니 i 에 1을 더하려면 $ expression을 사용해서 더해야하는데 이걸 놓쳤다. 아래처럼 코드를 바꿔 다시한번 실행해보자. #!/u.. 2021. 6. 16.
Bash script 에서 사칙연산 구현하기 Bash script 작성 시 사칙연산의 구현은 아래 코드처럼 구현 가능하다. #!/usr/bin/bash i=3 echo $i // 3 출력 i+3 echo $i // 33 출력 i=`expr $i + 3` echo $i // 36 출력 i=`expr $i / 3` echo $i // 12 출력 i=`expr $i \* 4` // 역슬래시 '\' 주의! echo $i // 48 출력 2021. 6. 14.
Bash script for loop 반복문 사용하기 이번에는 Bash script로 반복문을 사용하는 방법을 정리해 본다. 일반적으로 범위 내 숫자는 아래와 같이 루프구성이 가능하다. #!/usr/bin/bash for i in 1 2 3 4 5 do echo $i done for item in `cat hosts` do echo $item done Bash version 3.0+ 부터는 아래와 같은 for loop를 구성할 수도 있다. for i in {1..5} do ehoc $i // 1 ~ 5 까지 출력 done 2021. 6. 14.
[csh] cshell 에서의 for문 ( 반복문 ) 사용 방법 리눅스 환경에서 시스템을 운영하거나 개발하다보면 Shell script 사용은 거의 필수적이라고 할 수 있다. 어느정도 익숙해져서 바로바로 사용할 때가 대부분이지만 Bash / Csh 을 옮겨다니면서 사용하다보니 에러를 뱉어서 다시한번 찾아보게 되는 경우가 종종 있다. 더 이상 찾아보지 않기 위해서 내 방식대로 정리를 해 보려 한다. foreach 우선 foreach 문 부터 사용해보면 #!/usr/bin/csh # forloop.csh foreach c ( 1 2 3 4 5 ) echo $c end 실행하면 아래와 같은 결과를 얻는다. 1 2 3 4 5 while while문은 아래와 같이 사용 가능하다. #!/usr/bin/csh # while.csh set i = 1 while ( $i 2021. 6. 11.