본문 바로가기

bash12

[Bash] 문자열 자르는 방법 Bash 스크립트로 문자열 데이터를 다룰 때, 문자열의 일부를 잘라서 사용해야하는 경우도 있다. 문자열을 자르는 방법에 대해서 알아보자. 문자열 자르기 - 인덱스로 자르기 Bash 스크립트에서 문자열의 일부를 잘라서 사용해야 하는 경우 다음과 같은 문법을 사용하면 된다. ${str:offset:length} str 변수에 담겨있는 문자열의 offset 부터 length 만큼 잘라오겠다는 의미다. 예를 들어 #!/bin/bash str="Hello, World" echo "${str:0:5}" echo "${str:7:5}" Hello, World 라는 문자열을 담고 있는 str 변수를 ${str:0:5}로 접근하면 0번 문자부터 5개의 문자를 잘라서 가져온다. 즉 Hello 문자열이 얻어진다. 마찬가지로.. 2022. 12. 3.
[Bash] 문자열 비교 방법 리눅스 Bash 스크립트에서 문자열을 비교하고, 문자열을 자르는 방법에 대해서 알아보자. 문자열 비교 - 같은지 확인 Bash 스크립트에서 두 문자열을 == 연산으로 비교할 수 있다. #!/bin/bash str1="Hello" str2="hello" if [ $str1 == $str2 ];then echo "Equal" else echo "Not equal" fi 이 스크립트를 실행하면 다음과 같은 출력을 얻게 된다. $ ./test.sh Not equal 단순히 == 연산으로 두 문자열을 비교할 경우, 둘 중 하나가 빈 문자열일 때 에러가 발생한다. 예를 들어 #!/bin/bash str1="Hello" str2="" if [ $str1 == $str2 ];then echo "Equal" else e.. 2022. 12. 2.
[Bash] warning: shell level (1000) too high, resetting to 1 에러 bash 스크립트를 수행하다가 다음 에러를 만나게 되었다. $ ./run /bin/bash: warning: shell level (1000) too high, resetting to 1 쉘의 레벨이 1000으로 너무 높아서 1로 리셋했다는 의미다. 쉘 스크립트를 실행할 때, 또 다른 쉘을 열어서 진행하는 경우 쉘 레벨(SHLVL) 변수를 하나씩 증가시킨다. 현재 쉘의 레벨 값은 SHLVL 변수를 조회해보면 알 수 있다. $ echo $SHLVL 1 $ bash $ echo $SHLVL 2 $ exit $ echo $SHLVL 1 문제는 어디에선가 쉘 스크립트를 재귀적으로 호출하는 곳이 있을 때 발생한다. 다음 코드를 실행하면 동일한 에러를 재현할 수 있다. $ echo "bash run" > run $.. 2022. 10. 21.
[Bash] 쉘 스크립트에서 사용자 입력 받기 (read 명령어 사용법) 쉘 스크립트를 작성하다보면 사용자의 입력을 받아야 하는 경우가 있다. Bash에서는 read 명령어를 이용해 사용자로부터 입력을 받을 수 있다. read 명령어로 사용자 입력 받기 사용자로부터 입력을 받기위해 read 명령어를 사용할 수 있다. read 명령어를 사용하는 예제를 살펴보자. #!/bin/bash echo "What is your name?" read name echo "Hello, $name!!" 사용자로부터 이름을 입력받아 인사를 하는 간단한 예제다. 이를 실행하면 다음과 같은 결과를 얻을 수 있다. $ bash test.sh What is your name? Dave Hello, Dave!! 두개 이상의 입력 받기 하나의 read 명령을 이용해 두 개 이상의 입력을 받을 수 있다. 공백.. 2022. 8. 27.
[Linux] Bash 문자열 변수 조작 (자르기, 치환, 삭제) Bash 스크립트를 작성하다보면 간단하게 문자열 변수를 조작하고 싶을 때가 있다. 예를 들어 따옴표로 감싸진 문자열 값에서 앞, 뒤에 있는 따옴표를 제거한 알맹이만 꺼내고 싶을 때가 있다. Bash에서는 문자열 변수를 간단하게 조작할 수 있는 몇 가지 기능을 제공한다. 1. 문자열 변수 연결 문자열 변수의 값들을 연결하는 Concat 동작은 간단하다. new_value=${old_value1}-with-${old_value2} 이런식으로 사용하면 'old_value1' 변수의 값과 'old_value2' 변수의 값 사이에 '-with-' 문자열을 추가한 형태의 새로운 문자열이 만들어진다. 2. 문자열 변수 자르기 프로그래밍 언어에서 문자열을 '슬라이싱(slice)'하는 경우가 종종 있다. Bash에서는 .. 2021. 6. 24.
[Linux] Bash 스크립트에서 따옴표 제거 Bash 스크립트를 작성할 때 쌍따옴표(")로 둘러쌓인 값에서 쌍따옴표만 제거하고 싶을 때가 있다. "Hello" 라는 값에서 쌍따옴표만 제거하고 Hello 라는 값만 추려내고 샆은 경우가 이에 해당한다. 이 경우 Bash의 매개변수 치환(Parameter Substitution)을 이용하면 된다. 예를 들어 $ VAR="\"TEST\"" $ echo $VAR "TEST" "TEST"라는 문자열이 변수에 저장되어 있을 때, 앞뒤에 있는 쌍따옴표만 제거하기 위해서는 $ temp="${VAR%\"}" $ temp="${temp#\"}" $ echo "$temp" TEST 이런 식으로 입력하면 된다. ${VAR%\"} 를 실행하면 VAR 데이터에 저장되어 있는 값에서 뒤쪽에 오는 쌍따옴표가 제거된다. ${te.. 2021. 6. 17.
[Linux] 명령행(터미널)에서 메일 보내기 - sendmail, mail(mailx) 명령 사용법 및 예제 모니터링 스크립트를 작성하고 crontab을 이용해서 주기적으로 실행하도록 설정하는 경우, 문제가 생겼을 때 메일을 통해서 원격으로 리포트를 받아보길 원할 때가 있다. 리눅스에서는 이런 경우 메일 전송을 해주는 유틸리티를 이용해서 모니터링 결과를 메일로 전송할 수 있다. sendmail 설치 CentOS 기준 yum을 이용해서 sendmail을 설치해준다. $ sudo yum install sendmail sendmail-cf -y 그리고 sendmail 서비스를 실행해준다. $ sudo systemctl start sendmail.service $ sudo systemctl enable sendmail.service mailx 설치 CentOS 기준, yum을 이용해서 mailx를 설치해준다. $ su.. 2021. 6. 9.
[Linux] mktemp 명령 사용법 및 예제 - 임시 파일 만들기 Bash 스크립트를 작성하다가 임시로 파일을 만들어서 사용하고 싶은 경우가 있다. 특정 파일 경로를 사용하면 스크립트를 동시에 실행할 경우 파일의 내용이 덮어쓰여지게 된다. 따라서 현재 실행 중인 프로세스에서만 접근할 수 있는 임시 파일을 생성할 필요가 생길 수 있다. 이럴 때 mktemp 명령을 사용하면 편하다. mktemp 사용법 mktemp 명령은 다음과 같이 사용할 수 있다. $ mktemp /tmp/tmp.Jgx8ybtklqk mktemp 명령을 실행하면 /tmp 디렉토리에 임의의 파일이 생성되고 생성된 파일의 이름이 리턴된다. 스크립트 내에서 임시로 사용할 파일을 생성할 때, 이 명령을 사용하고 출력되는 파일 이름을 사용하면 된다. -d 옵션을 이용해서 임시 디렉토리도 생성할 수 있다. $ m.. 2021. 6. 8.
[Linux] Bash case 조건문 문법 리눅스에서 Base 스크립트를 작성할 때 사용할 수 있는 조건문 중 `case`문이 있다. 마치 Java에서 switch - case문처럼 Base에서도 조건문을 간단하게 사용할 수 있다. Bash - case문 Base에서 case문은 다음 문법을 따른다. case 기준문자열 in 문자열1) 명령 명령 ;; 문자열2) 명령 명령 ;; *) 명령 명령 ;; esac 기준문자열에 해당하는 값을 '문자열1', '문자열2'와 비교하여 분기한다. 각 분기의 마지막에는 ;;를 찍어서 분기의 종료를 알려줘야한다. *)는 Java의 switch-case 문에서의 default와 같다. '문자열1', '문자열2'와 같지 않은 모든 경우가 이 곳으로 분기한다. 분기의 조건은 OR 조건으로 여러개를 묶을 수도 있다. ca.. 2020. 11. 17.