반응형
배시 (Bash, Bourne-again shell, 본 어게인 셸)은 본 셸을 대체하는 자유 소프트웨어로서 GNU 프로젝트를 위해 브라이언 폭스(Brian Fox)가 작성한 유닉스 셸이다.[2][3] 1989년 발표되어 GNU 운영 체제와 리눅스, 맥 OS X 그리고 다윈 등 운영 체제의 기본 셸로 탑재되어 광범위하게 배포되었다. 또한 DJGPP와 노벨 넷웨어에 의해 도스로 이식되었고 시그윈과 MinGW의 배포로 마이크로소프트 윈도로 이식되었다.
출력
$ echo "Hello World"
Hello World
$ printf "Hello World"
Hello World
변수
$ MYVAR = asdftest
$ echo $MYVAR
asdftest
$( )를 이용하여 명령의 출력을 변수에 넣기
$ CMDOUT=$(pwd)
$ echo CMDOUT
/.../... <- pwd를 실행한 내용이 출력
위치매개변수 (echoparams.sh)
echo $# -- 매개변수의 갯수
echo $0 --스크립트 이름
#echoparams.sh 안의 내용
echo $#
echo $0
echo $1
echo $2
echo $3
$./echoparams.sh VAR is ABC
3
./echoparams.sh
VAR
is
ABC
조건분기
#if 명령
#then
# 다른 명령
#else
# 또 다른 명령
#fi
#현재 디렉토리를 /tmp로 변경. 성공이면 then 절 실행
if cd /tmp
then
echo "/tmp 디렉토리의 내용:"
ls -l
fi
#파이프로 연결된 명령
if ls | grep pdf
then
echo "pdf 파일이 하나이상 존재함"
else
echo "pdf 파일 없음"
fi
파일 판정 연산자
if [[ -e $FILENAME ]]
then
echo $FILENAME 파일이 존재함
fi
파일 판정 연산자표
파일 판정 연산자 | 용도 |
-d | 주어진 디렉토리가 존재하는지 판정 |
-e | 주어진 파일이 존재하는지 판정 |
-r | 주어진 파일이 존재하며 읽을 수 있는지 판정 |
-w | 주어진 파일이 존재하며 쓸 수 있는지 판정 |
-x | 주어진 파일이 존재하며 실행할 수 있는지 판정 |
수치 판정 연산자
수치 판정 연산자 | 용도 |
-eq | 두 수가 같은지 판정 |
-gt | 앞의 수가 뒤의 수보다 큰지 판정 |
-lt | 앞의 수가 뒤의 수보다 작은지 판정 |
비교문 주의
# 단순 비교 시 (이중 대괄호)
if [[ $VAL1 < $VAL2 ]]
# 수치 비교시 (이중 괄호)
if (( $VAL1 < $VAL2 ))
루프반복
# 변수 i가 1000보다 작은 동안 반복된다.
# 실행될때마다 i 값을 화면에 출력(echo) 한다.
# 그 후 let 명령을 이용해서 i++ 를 실행(i=i+1)한다.
i=0
while (( i < 1000))
do
echo $i
let i++
done
# 아래와 같이 while 문에 명령을 실행하여 루프반복을 할 수도 있다.
while ls | grep -q pdf
do
echo -n '이름에 pdf가 포함된 파일이 이 폴더에 있음:'
pwd
cd ..
done
# for 문 샘플1
for ((i=0; i < 100; i++))
do
echo $i
done
# for 문 샘플2
# 인자값을 for 문 돌며 그대로 출력
for ARG
do
echo 인자값 : $ARG
done
# for 문 샘플3
# VAR에 20 3 ....등 값을 임의로 지정하여 순차적으로 출력
for VAL in 20 3 멍멍이 고양이 7 파인애플
do
echo $VAL
doen
# for 문 샘플4 실행문을 for문에 대입
# 현재 위치에 파일명(확장자포함)에 pdf가 포함된 모든 파일 출력
for VAR in $(ls | grep pdf)
do
echo $VAL
done
함수
# 문법
function myFunc()
{
# 함수의 내용
}
# 아래와 같이 function 또는 () 둘중 하나를 생략해도 되지만, 가독성을 위해 둘다 적어주는게 좋다
# 문법 (생략1)
function myFunc
{
# 함수의 내용
}
# 문법 (생략2)
myFunc()
{
# 함수의 내용
}
# 함수 호출 및 인자 넘기는 법 (괄호 없이 스페이스로 구분하여 인자를 적어준다)
myFunc 2 /aaa "test"
운영체제 확인 쉘 스크립트
# 파일명 : checkos.sh
# 사용법 : ./checkos.sh
#------------------
# type : 지정된 명령어가 쉘에 내장된 명령어인지, 외부명령어인지, 앨리어스 명령어인지 등을 확인하는 명령어이다.
# type -t : 유형을 알려주는 옵션
#
# /dev/null : null 장치로 그냥 버린다는 의미
# 명령어 또는 실행파일 &> /dev/null
# 실행로그, 실행오류로그를 /dev/null로 보낸다는 의미로 리턴되는 메시지를 보지 않고 버린다는 의미이다.
# aa.log 파일은 그대로 유지 하면 안의 내용을 비우고 싶을때 (0 byte) /dev/null > aa.log
#------------------
# 윈도우에만 존재하는 wevtutil 명령어를 체크하고 리턴되는 출력문자는 버린다. 존재하면 true, 해당 명령어가 없으면 false
if type -t wevtutil &> /dev/null
then
OS=Windows
# 맥에만 존재하는 scutil 명령어를 체크하고 리턴되는 출력문자는 버린다. 존재하면 true, 해당 명령어가 없으면 false
elif type -t scutil &> /dev/null
then
OS=Mac
# if문 모두 false라면..
else
OS=Linux
fi
echo $OS
반응형
'개발 > linux' 카테고리의 다른 글
bash 기초 - 리눅스 로그 파일 및 시스템 정보 (0) | 2021.01.18 |
---|---|
bash 기초 - ssh를 이용한 원격 명령 실행 (0) | 2021.01.18 |
무료 접속 유닉스(리눅스) 시스템 (0) | 2021.01.18 |
bash기초 - cut, file, head (0) | 2021.01.18 |
bash 기초 - 정규 표현식 (0) | 2021.01.18 |
댓글