간단한 bash쉘 스크립트 작성 요령

|


- 2015.02.04


출처 : http://koreahojin.egloos.com/1249277




#!/bin/bash로 시작하기.

- 스크립트 파일은 첫라인에서 #!/bin/bash 로 시작

- vi 편접기에서 # 기호는 주석을 의미하지만 첫라인에서는 주석 표시가 아님

- 첫라인을 안써 줘도 스크립트 파일이 실행되는 경우가 있는데 현재 사용자의 기본적으로 배쉬 쉘을 사용한다면  

  가능하다.

- #!/bin/bash 대신에 #!/bin/sh 로 써도 된다. sh는 bash 의 심볼릭 링크 이기 ㅤㄸㅒㅤ문이다.


스크립트 파일의 실행방법.

- sh 명령어 사용 ( # sh 파일 이름 )

- 퍼미션 변경 후 실행 ( 실행 권한을 부여 )

-------------참고--------------

.bash_profile 파일에 PATH를 적어 주면 현재 있는 디렉토리의 위치와 상과없이 파일을 실행 시킬수 있음

----------------------------------------



[echo 기본 출력]


- echo 는 화면에 원하는 문자열을 출력시킨다.

- 출력 하고자 하는 문자열 공백이 있다면 전체를 "   " 묶어 주면 된다.

- 예 : echo " bye bye "


변수를 만들고 사용하기

- 형식 :  변수명=변수값

- 사용예 : korea="GOOD"

- 적용예 : echo $korea

- 주의점 : 변수명 다음에 오는 '=' 의 좌우로 공백이 있으면 안된다.

- 변수를 지정할 때는 $를 사용하지 않지만, 변수를 사용할 때는 $ 기호를 변수 앞에 붙여서 사용합니다.

-  C언어 에서 전역변수라고 불리는 것을 쉘 스크립트에서는 환경 변수라고 한다. 환경변수는 export 명령을 사용하여 만든다. 사용자가 로그인을 할때 읽어 들이는 파일중에 /etc/profile 파일이 있다. 이곳을 보면 export로 환경 변수를 만드는 것을 찾을 수 있다.


- example

[root@localhost ~]# cat > example

#!/bin/bash

color=red

korea="good"

echo $color

echo "$color is red"

echo $korea

You have new mail in /var/spool/mail/root

[root@localhost ~]# sh example

red

red is red

good




[read의 사용]


- read 문은 사용자의 표준입력을 받아들여 변수로 저장하는 역할을 한다. 먼저 아래의 예제를 실행해보자

[root@localhost ~]# cat > readsh

#!/bin/bash

echo -n "age: "

read x

echo "Your are $x years old"

[root@localhost ~]# sh readsh

age: 22

Your are 22 years old


- 스크립트 파일을 실행할 때. read문을 만나면 화면상에 커서가 깜박이면 대기상태로 있다.

입력한 값을 read 다음에 오는 변수명(x)에 대입한다.

echo -n 에서 옵션 -n은  줄바꿈을 하지 않도록.




[argument (인자값)]


- 스크립트 파일을 실행하기전에 특수한 값을 동시에 입력하여 결과를 얻을수 있게 할수있다.

- C언어에서 main() 함수의 전달값으로 생각하면된다.

- 예를 들어 # /etc/rc.d/init.d/network start 여기서 netwrok는 스크립트 파일이다. 이파일을 실행하면서 뒷부분에 restart라는 argumnet를 주었다.

- 아직도 먼 말인지 모르겠다면 예제를 만들어 실행해 보자.

[root@localhost ~]# cat > argumentsh

#!/bin/bash


echo "argumnet1 : $1"

echo "argument2 : $2"

echo "argument3 : $3"

echo "Total argument number : $#"

echo "File name : $0"

[root@localhost ~]# sh argumentsh 1arg 2arg 3arg

argumnet1 : 1arg

argument2 : 2arg

argument3 : 3arg

Total argument number : 3

File name : argumentsh

[root@localhost ~]#     


$1 은 첫번째 argument를 나타내며 $2는 두번째, $3은 세번째 argument를 나타낸다.

argument를 입력하지 않을경우, 오류가 나는 것이 아니라 값이 대입되지 않는다.

$#은 전체 argument의 개수를 나타내며 $0은 스크립트 파일의 이름을 나타낸다.




* 현재 디렉터리의 모든 파일 압축


출처 : https://kldp.org/node/69623

현재 디렉터리의 모든 파일을 지정할떄는 보통 * 와일드카드 문자로 가능하지만 히든파일까지는 선택이 안된다.

tar cf test.tar . 명령어로 가능하지만 ls 와 묶어서 사용하는 방법도 있다.


ls -1A | tar cvjf bak.tbz2 -X exclude -T -


1은 한줄에 파일 하나 출력, A는 a와 같지만 . , .. 를 제외.

-T는 묶을 목록을 파일에서 받기 - 는 표준 입력.




And