bash_03 사칙 연산을 간단하게 작성하기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: echo
키워드: 산술식, 산술 확장, 산술 평가
사용처: expr 명령어를 사용하지 않고 산술식을 계산한 결과를 얻고 싶을 때
실행예제
$ ./bash-arithmetic.sh
1.txt에서 100.txt 까지 100개의 파일이 작성됨
스크립트
#!/bin/bash
# 브레이스 확장으로 1에서 100까지 숫자 목록 생성
for i in {1..100} #---------------------------- 1
do
# 산술 확장을 이용해서 파일명에 3을 곱해서 계산한
# 값을 텍스트 파일에 저장
ec...
bash_02 for 반복문을 간단히 작성하기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: ping, echo
키워드: 브레이스 확장, bash
사용처: IP 주소 목록 등을 브레이스 확장으로 간단히 작성하고 싶을 때
실행예제
$ ./bash-brace.sh
[OK] Ping -> 192.168.2.1
[OK] Ping -> 192.168.2.2
[OK] Ping -> 192.168.2.3
[OK] Ping -> 192.168.2.4
[OK] Ping -> 192.168.2.5
스크립트
#!/bin/bash
# bash 브레이스 확장 {}으로 IP 주소 목록 작성
for ipa...
셸 스크립트를 sh로 작성할까? bash로 작성할까?
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
셸 스크립트를 작성할 때는 이식성과 호환성을 고려해서 /bin/sh가 널리 사용됩니다. 하지만 sh는 역사가 긴 셸인 반면, 수치 계산에 외부명령어가 필요하다는 단점이 있고 현대적인 프로그래밍 역시 어려운 것이 사실입니다. 따라서 bash로 셸 스크립트를 작성하는 것을 선호하는 층도 최근에는 늘고 있습니다.
bash로 셸 스크립트를 작성하는 장점은 단순히 프로그래밍 하기 쉽다는 것도 있지만 이식성과 호환성이 오히려 sh보다 낫다는 의견도 있습니다.
예를 들어 같은 리눅스라도 CentOS 등은 /bin/sh를 bash로 대신하는 반면 우분투는 dash라는 ...
bash_01 셸 변수를 정수값 같은 속성으로 선언하기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: declare, curl
키워드: bash, 변수, 속성, 자료형, 산술 확장
사용처: 셸 변수를 정수값으로 선언해서 자동으로 계산하고 싶을 때
실행예제
$ ./bash-declare.sh
URL을 자동 생성해서 내려받기
스크립트
#!/bin/bash
url_template="http://www.example.org/download/img_%03d.jpg"
# 카운터 변수 count를 정수형으로 선언
declare -i count=0 #----------------------------------...
변환 처리_12 히어 도큐먼트에서 변수 확장하지 않고 그대로 $str처럼 표시하기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: cat
키워드: 히어 도큐먼트, 따옴표, 파라미터 확장, 명령어 치환, 텍스트
사용처: 히어 도큐먼트 본체에 `(그레이브)를 $로 사용하는데 확장하지 않고 그대로 출력하고 싶을 때
실행예제
$ ./here.sh
여기는 히어 도큐먼트 본체입니다.
이 부분에 적힌 문자열은 명령어 표준 출력에
직접 리다이렉트됩니다.
종료 문자열을 작은따옴표 기호로 감싸면
$str이라고 적어도 변수 확장되지 않으며
`echo abc`도 명령어 치환되지 않습니다.
스크립트
#!/bin/sh
# 이 변수는 확장되지 않으므로 실제로는 사용되...
변환 처리_11 미정의 변수를 에러로 처리해서 실수 방지하기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: set
키워드: 미정의, 변수, 에러, 빈 문자열
사용처: 스크립트에서 정의 안 된 변수를 사용하면 에러 종료하고 싶을 때
실행예제
./set-u.sh
./set-u.sh: line 7: COP_DIR: unbound variable
스크립트
#!/bin/sh
set -u #------- 1
COPY_DIR=/myapp/work
# COPY_DIR이 아니라 COP_DIR이라고 실수했다!
cp myapp.log $COP_DIR
해설
이 스크립트는 변수명을 잘못 타이핑해서 미정의 변수를 쓰게 될 때...
변환 처리_10 명령어 출력 결과를 파일명에 포함해서 그 파일명을 대상으로 명령어를 실행할 때 보기 쉽게 하기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: hostname, grep
키워드: 명령어 치환, 끼워넣기, 네스트
사용처: 명령어 치환 처리를 끼워 넣고(네스트) 싶을 때
실행예제
$ ./comsub.sh
Error counts: 2
스크립트
#!/bin/sh
err_count=$(grep -C "ERROR" /var/log/myapp/$(hostname).log) #--- 1
echo "Error counts: $err_count"
해설
이 스크립트는 hostname 명령어로 파일명을 조합한 로그 파일에서 ERROR라는 문자열을 검색하여 일치...
207 post articles, 30 pages.