이번 포스팅은 Shell Script
로 변수를 할당하는 방법을 학습한 뒤 원하는대로 자기소개를 만들어 본 경험을 소개하고자 합니다.
입력한 변수의 개수
Linux shell script
실행 명령을 날릴 때, 변수를 함께 스크립트로 넘길 수 있습니다.
./introduc.sh a b c
위 명령어처럼 공백을 두고 명령문을 실행하면 a, b, c
가 script의 변수로 할당됩니다.
변수로 할당된 내용을 사용하는 다양한 명령어가 있는데요, 그 중에서도 변수의 개수
와 변수
를 사용하는 방법은 아래와 같습니다.
$# Stores the number of command-line arguments that
were passed to the shell program.
$0 Stores the first word of the entered command (the
name of the shell program).
$#
은 변수의 개수를 $0
은 해당 index의 변수를 가져옵니다.
if [ $# -eq 0 ]; then
echo "변수를 입력해줘요"
fi
NAME=$1
AGE=$2
echo "이름 : $NAME, 나이 : $AGE"
위와 같은 스크립트가 있을 때 ./introduce.sh huni 26
을 입력하면 이름 : huni, 나이 : 26이 출력됩니다.
하지만 명령어 자체가 조금 불친절해보입니다.
while
과 case
를 이용하여 조금 더 깔끔하게 변경해보겠습니다.
while, case
if [ $# -eq 0 ]; then
echo "자기 소개 내용을 입력해주세요"
exit 1
fi
NAME=""
AGE=""
ORGANIZATION=""
PART=""
while (($#)); do # 1
case "$1" in # 2
-n|--name)
if [ -n "$2" ]; then # -n : 변수가 존재하면
NAME=$2
shift 2 # 3
fi
;;
-a|--age)
if [ -n "$2" ]; then
AGE=$2
shift 2
fi
;;
-o|--organization)
if [ -n "$2" ]; then
ORGANIZATION=$2
shift 2
fi
;;
-p|--part)
if [ -n "$2" ]; then
PART=$2
shift 2
fi
;;
-h|--help)
if [ $# -eq 1 ]; then
echo "help argument command"
echo "-n | --name : 이름"
echo "-a | --age : 나이"
echo "-o | --organization : 조직"
echo "-p | --part : 부서"
exit 0 # 4
else
echo "-h | --help 명령어만 입력하세요"
exit 1 # 4
fi
;;
esac
done
- (1)
while (($#)); do done
은 남아있는 커맨드 인자가 하나라도 존재하면 반복문을 계속 진행합니다. 따라서 (3)shift
와 함께 사용해야하는데요.shift
는 입력한 숫자만큼 현재 위치에서 뒤로 이동합니다. 따라서#1
에서#3
으로 이동하고 싶다면shift 2
를 입력하면 되겠죠. - (2)
case $1 in ~~) ;; esac
는 java의 switch case와 같은 개념입니다.$1
변수가 in 이후에 나오는 내용과 같다면 내부 명령문을 실행시켜 줄 수 있는 것이죠. - (4)
exit
은 shell 명령을 종료합니다. 다만 exit 뒤의 0과1~255
는 각각 정상종료, 오류종료를 의미합니다. 종료되더라도 오류상황이 아니라면exit 0
을 사용하고, 에러 상황이라면exit 1~255
을 사용합니다. 명령어 실행 후 종료된다면,echo $?
와 같이 종료 코드를 확인해볼 수 있습니다.
위 script는 변수를 shift 해가면서 1번
변수에서 어떤 변수에 값을 할당할지 결정하고 2번
변수를 이용해 변수에 값을 할당해주는 과정을 거칩니다.
마무리
if [ -z $NAME ]; then
echo "이름을 입력해주세요."
exit 1
fi
if [ -z $AGE ]; then
echo "나이를 입력해주세요."
exit 1
fi
if [ -z $ORGANIZATION ]; then
echo "조직을 입력해주세요."
exit 1
fi
if [ -z $PART ]; then
echo "부문을 입력해주세요."
exit 1
fi
echo "이제부터 자기소개 시작"
echo "이름 : $NAME"
echo "나이 : $AGE"
echo "조직 : $ORGANIZATION"
echo "부문 : $PART"
가장 하단에 모든 값이 다 존재하는지 -z
명령어를 통해 확인하고 출력하고자 하는 내용을 출력해줍니다.
./introduce.sh -n huni -a 26 -o wooteco -p BE
내용을 입력하면 아래와 같이 자기소개가 출력됩니다.
이제부터 자기소개 시작
이름 : huni
나이 : 26
조직 : wooteco
부문 : BE
'우아한테크코스 4기 > 레벨3' 카테고리의 다른 글
의존관계 분리 경험 공유(2) (0) | 2022.08.10 |
---|---|
의존관계 분리 경험 공유(1) (0) | 2022.08.10 |
[Logback] Spring Logback configuration 과정 (2) - Spring (0) | 2022.07.17 |
[Logback] Spring Logback configuration 과정 (1) - Appenders (0) | 2022.07.16 |