[RHEL6] 쉘 명령어 2탄(exit, exports, expr, false, for)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 쉘 명령어 2탄(exit, exports, expr, false, for)

by 찬찬이 아빠 2020. 2. 14.
반응형
  6. exit(종료)

 1) 요약 : 명령행이나 쉘 스크립트 종료

 2) 사용 방법 : exit [n]

 3) 추가 설명

쉘 스크립트 문장 내에서 스크립트를 종료합니다. exit 0은 성공적인 종료를 0이 아닐 때는 실패를 나타냅니다. 터미널 상에서 명령어로 사용할 경우 터미널을 종료시키거나 로그인 될 쉘을 빠져나옵니다.

 

<exit 스크립트(파일명 : exitscript)>

스크립트 설명
#!/bin/bash bash 쉘로 스크립트가 실행
echo "스크립트 시작" "스크립트 시작"을 화면에 출력
#exit 0

현재 주석9#)으로 표시가 되어 있음

#을 제거할 경우 스크립트를 종료하고 나가게 됨

echo "스크립트 종료"

"스크립트 종료"를 홤녀에 출력

 

<스크립트 실행>

먼저 exit를 사용하지 않았을 경우를 생각해봅니다.

# ./exitscript
스크립트 시작
스크립트 종료

 

그리고 exit를 사용한 경우를 생각해 봅니다.

스크립트를 끝까지 실행하지 않고, exit를 만난 시점에서 빠져 나옵니다.

# ./exitscript
스크립트 시작

 

 

 

  7. exports(변수 지정)

 1) 요약 : 변수를 설정

 2) 사용 방법 : export [옵션] 변수명=설정

 3) 옵션

 -f : 함수를 가리킴

 -p : export 목록을 출력

 -n : export 속성을 제거

 

 4) 추가 설명

변수를 지정하는 명령어입니다. 현재 시스템에 설정되어 있는 변수 목록을 볼 수 있습니다.

# export
declare -x COLORTERM="gnome-terminal"
declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-Lg0Ay77NCb,guid=jl2rjkjd2j9djksjf20
declare -x DEFAULTS_PATH="/usr/share/gconf/gnome.default.path"
declare -x DESKTOP_SESSION="gnome"
declare -x DISPLAY=":0.0"
declare -x GDMSESSION="gnome"
declare -x GDM_KETBOARD_LAYOUT="us"
declare -x GDM_LANG="ko_KR.utf9"
declare -x GNOME_DESKTOP_SESSION_ID="this-is-deprecated"
... 이하 생략 ...

 

시스템의 qt 디렉터리를 가리키는 변수은 QTDIR을 설정해 봅니다.

$ export QTDIR="/usr/lib/qt-4.7"
$ export | grep QTDIR
declare -x QTDIR="/usr/lib/qt-4.7"

 

expor의 목록을 파이프(|)로 받아 grep 명령어로 "QTDIR" 문자열을 검사해 해당 줄만 출력합니다. export 되어 있음을 확인할 수 있습니다.

 

 

 

  8. expr(표현식 평가)

 1) 경로 : /usr/bin/expr

 2) 요약 : 지정한 인수를 표현식으로 인식

 3) 사용 방법 : expr [인수]

 4) 추가 설명

expr 명령어는 쉘 스크립트를작성할 때 자주 쓰입니다. 예를 들어 주어진 인수를 계산식으로 인식하여 연산할 수 있습니다.

아래는 이에 대한 간단한 예제 입니다.

# expr 1 + 2
3

 

일반적으로는 문자열 연산이 가능한 식으로 인식하여 결과값을 돌려줍니다.

※ 항목 하나 하나를 띄어 쓸 때 만 원하는 결과를 얻을 수 있습니다.

"1 + 2"가 아니라 "1+2"로 쓰면 문자열로 인식합니다.

 

 

 

  9. false(항상 실패)

 1) 경로 : /bin/false

 2) 요약 : 결과값을 실패나 거짓으로 반환

 3) 사용 방법 : false [옵션]

 4) 옵션

 --help : 사용법을 출력

 --version : 버전 정보를 출력

 

 5) 추가 설명

false는 아무런 작업을 하지 않고 실행 결과값을 실패로만 반환합니다. 주로 쉘 스크립트 문법에서 사용하고 실패 처리를 테스트 하거나 디버깅 할 때 사용합니다.

 

echo $? 명령어는 마지막 실행한 명령의 성공(0), 실패(1)를 출력합니다.

# echo $?
0
# false
# echo $?
1

 

 

 

  10. for(for 루프문)

 1) 요약 : for를 이용한 루프문

 2) 사용 방법

   for x in 목록

   do

   명령해

   done

 

3) 추가 설명

for는 목록에 있는 것을 하나씩 변수(x)에 넣어 do를 실행합니다. 목록은 모두 do 아래의 명령행을 실행하고 빠져나갑니다.

스크립트 설명
#!/bin/bash bash 쉘로 스크립트가 실행
for i in test1 test2 test3 for문으로 test1부터 test3까지 차례로 변수 i에 넣으면서 루프를 수행

do

   echo "$i"

i에 받은 값을 do 아래 명령에서 실행

echo로 i가 무엇인지 출력

done

test3까지 마치면 done 아래를 실행

 

<스크립트 실행>

위 스크립트를 실행합니다.

# ./forscript
test1
test2
test3

 

루프에 들어가는 목록은 위와 같이 지정해 줄 수 있으며 sed나 awk 등의 라인 편집기에서 한줄씩 입력받아 사용합니다.

 

아래 예제는 ftp 서버에 접속한 /var/log/xferlog 파일의 로그를 분석하여 그 중 chan 사용자의 로그 정보만을 따로 분리하는 스크립트입니다. 이는 awk 명령어로 xferlog 파일에서 chan가 검색되는 라인을 추출하여 그 중 아홉 번째 필드의 로그를 변수 j로 저장하여 File 디렉터리에 저장합니다.

#!/bin/bash
mkdir File 		// File 디렉터리 생성
for j in `awk 'chan/ {print $9}' /var/log/xferlog`
do
	cp --parents $j File/		// $j 내용을 File 디렉터리에 경로와 함께 복사
done
반응형

댓글