쉘 스크립트 프로그래밍 - 3

2019. 10. 5. 16:31임베디드/리눅스시스템프로그래밍

쉘 스크립트 기본 문법으로 파일 탐색이 가능하다. 파일 탐색 뿐만 아니라 디렉토리 검사, 읽기쓰기실행 권한 파악 등이 가능하다

#!/bin/bash

# -e 파일 탐색

filename="echo_test.sh"
if [ -e $filename ]
then
    echo "$filename exists"
else
    echo "$filename does not exist"
fi

 

명령 인자를 받아서도 일반적인 코드를 작성할 수도 있다

#!/bin/bash

if [ -e $1 ]
then
    echo "$1 exists"
else
    echo "$1 does not exist"
fi

 

참고로 if 조건문을 한 줄에 작성할 수 있다. 새미콜론으로 구분하며 마지막은 생략한다

#!/bin/bash

if [ -z $1 ]; then echo "insert argument"; fi

 

실제로 ping 명령어를 실행해, 명령이 잘 실행됐는지 확인할 수 있다

#!/bin/bash

# -c 옵션은 count의 약자로 몇 번 ping을 보낼 지 명시한다
# 1>/dev/null에서 1은 표준 출력을 의미하고, /dev/null은 redirection 디렉토리로 아무 출력을 하지 않는다

ping -c 1 192.168.123.254 1>/dev/null
if [ $? != 0 ]
then
    echo "게이트웨이 핑 실패"
else
    echo "게이트웨이 핑 성공"
fi

 

for 반복문은 python과 유사하다

#!/bin/bash

# for 변수 in 리스트
# do
# 실행문
# done
# for문도 ;을 통해서 한 줄로 작성이 가능하다
# for 변수 in 리스트; do; 실행문; 

for list in $(ls)
do
	echo $list
done

echo "=================="

filelist=($(ls))
for var in ${filelist[*]}
do
    echo $var
done

 

while도 for문과 비슷한 형식을 갖는다. while문으로 디렉토리를 출력하는 코드를 작성해보면 다음과 같다

#!/bin/bash

index=0
filelist=$(ls)
filelist_num=${#filelist[*]}

while [ $index != $filelist_num ]
do
    echo ${filelist[$index]}
    index=`expr $index + 1`
done