셸 스크립트 작성 방법
- 신규 파일 생성
$ vim homesize.sh
- 파일 내용 작성
#!/bin/bash
du -h ~ | tail -n 1
- #!로 시작하는 행: 셔뱅
- 주석으로 간주
- 이 셸 스크립트는 /bin/bash를 사용한다고 명시적으로 선언
- 실행 권한 부여 및 실행
# 실행 권한 부여
$ chmod +x homesize.sh
# 현재 디렉터리에 있는 homesize.sh를 실행
$ ./homesize.sh
source 명령어
셔뱅 없는 파일 ./homesize-hochebang.sh를 실행 권한 부여 없이 source ./homesize-noshebang.sh나 . ./homesize-noshebang.sh로 실행 가능
- 현재 셸에서 실행되기 때문에 주의
- source 명령어 대신 파일 이름으로 실행하는 것이 좋음
- 셔뱅에 지정한 셸에서 실행되기 때문에 현재 사용자가 사용하는 셸에 영향 받지 않음
- source 명령어는 현재 셸의 환경에 따라 실행되지 않거나 현재 셸의 변숫값이나 별명을 바꿀 수도 있음
- 여러 개의 셸 스크립트가 같은 값을 참조하거나 공통된 설정을 하나에 입력할 땐 유용함
여러 명령어를 한 행으로 입력
- ;로 연결하기
#!/bin/bash
echo "root directory"; cd /; ls -l
한 커맨드 라인 여러 행에 표기
- 행 끝에 \ 입력
#!/bin/bash
echo \
"root directory"
- 뒤에 Enter 누르기
sort file3 |
uniq -c |
sort -n
변수
appdir=/home/ldk/myapp # 공백X
echo $appdir # 참조하기
- 변수명에 사용할 수 있는 문자: 알파벳, 숫자, 언더스코어
- 숫자는 첫 글자로 사용 불가
쿼팅
- 작은따옴표나 큰따옴표로 감싸면 공백이 있어도 한 단어로 인식
- 큰따옴표 안에서는 $로 시작하는 변수가 값으로 치환됨
#!/bin/bash
country=Korea
echo 'I came from $country'
echo "I came from $country" # I came from Korea
echo "I came from \$country" # 와 같이 앞에 \\를 붙이면 문자 그대로 출력 가능
명령어 치환
$ filename=$(date '+%Y-%m-%d')
touch "$filename"
$ echo "Today is `date '+%Y-%m-%d'`."
Today is 2021-05-23.
위치 파라미터
#!/bin/bash
# parameters.sh
echo "\$0 = $0" # 특수 파라미터
echo "\$1 = $1"
echo "\$2 = $2"
echo "\$3 = $3"
echo "\$4 = $4"
echo "\$# = $#"
echo "\$@ = $@"
echo "\$* = $*"
$ ./parameters.sh aaa bbb ccc
$0 = ./parameters.sh # 셸 스크립트 파일 이름
$1 = aaa # 커맨드 라인 인자 값
$2 = bbb
$3 = ccc
$4 =
$# = 3 # 인자 3개
$@ = aaa bbb ccc # 각 위치 파라미터가 문자열로 전개
$* = aaa bbb ccc # 한 문자열로 전개
'books > Linux' 카테고리의 다른 글
[모두의 리눅스] 셸 스크립트 (4) 검색 명령어 (0) | 2024.08.09 |
---|---|
[모두의 리눅스] 셸 스크립트 (3) IFS (0) | 2024.08.09 |
[모두의 리눅스] 표준 입출력과 파이프라인 (0) | 2024.07.31 |
[모두의 리눅스] 프로세스와 잡 (0) | 2024.07.30 |
[모두의 리눅스] 퍼미션과 슈퍼 사용자 (0) | 2024.07.30 |