728x90
반응형
쉘 스크립트
쉘을 사용해서 프로그래밍을 할 수 있으며, 서버 작업의 자동화를 위해 필요하다.
기본문법
파일의 위의 첫 라인은 "#!/bin/bash" 로 시작해야한다.
쉘 스크립트는 실행 권한(x)을 가져야 한다.
변수선언
= 를 이용해서 선언하고 $를 이용해서 사용 (공백은 허용되지 않는다.)
{}는 parameter substitution으로 $와 함께 감싼 부분에 변수를 대입해준다.
#!/bin/bash
word="abc"
num=10
echo "${word}"
echo "${num}"
기본 출력
echo, printf
$# : 스크립트에 전달되는 인자들의 수
$0 : 실행된 스크립트명
$1, $2 ... : 스크립트로 전달된 인자들 (sh test.sh param1 param2 일 경우 $1은 param1, $2는 param2가 됨)
#!/bin/bash
echo "Test"
printf "script's name : %s\n" $0
printf "%d arguments %s %s\n" $# $1 $2
배열
기본
선언 : 변수명=(원소1 원소2 원소3 ...)
사용 : ${변수명\[인덱스])
#!/bin/bash
arr=("test1" "test2" "test3")
echo ${arr[0]} # test1
echo ${arr[@]} # arr의 모든 데이터 출력
echo ${arr[*]} # arr의 모든 데이터 출력
echo ${#arr[@]} # arr 배열 크기 출력
arr+=("add") # 배열 원소 추가
filelist=( $(ls) ) # 해당 쉘 스크립트 실행 디렉토리의 파일 리스트를 배열로 변수에 저장
echo ${filelist[*]}
배열 원소 삭제
/를 사용해 해당 문자열 부분이 있으면 삭제, 삭제하고자 하는 문자나 문자열이 포함되어있는 부분을 모두 삭제
(권고) unset을 이용해 삭제
#!/bin/bash
arr=(1 2 3)
remove_element=(3)
arr=( "${arr[@]/$remove_element}" )
for i in ${arr[@]}; do
echo $i
done
#!/bin/bash
arr=("abc" "def" "defghi")
remove_element=("def")
# Get index of array
echo ${!arr[@]}
for i in ${!arr[@]}; do
if [ ${arr[i]} = ${remove_element} ]; then
# Use unset
unset arr[i]
fi
done
for i in ${arr[@]}; do
echo $i
done
조건문
if [ 조건 ]; then ... elif [ 조건 ]; then ... else
를 사용if (( 산술 연산 )); then ... elif (( 산술 연산 )); then ... else
#!/bin/bash
str="test"
if [ "${str}" = "test" ]; then
echo "str is test"
else
echo "str is not test"
fi
반복문
while 사용
#!/bin/bash
cnt=0
while (( "${cnt}" < 10 )); do
echo "${cnt}"
done
for문 사용
#!/bin/bash
arr=(1 2 3 4 5 6 7)
for i in ${arr[@]}; do
printf $i
done
echo
for (( i = 0; i < 7; i++)); do
printf $i
done
echo
728x90
반응형
'프로그래밍 노트 > Linux' 카테고리의 다른 글
I/O 리다이렉션 (입출력 방향 지정) (0) | 2020.02.10 |
---|---|
rsync 사용법[데이터 백업, 원격 전송] (0) | 2020.02.10 |
쉘스크립트 흐름제어 (if, while, case) (0) | 2019.12.12 |
쉘 스크립트란? (0) | 2019.12.12 |
쉘스크립트 if 조건 종류 (0) | 2019.12.09 |