인프런 커뮤니티 질문&답변

앙앙기모님의 프로필 이미지

작성한 질문수

시스템엔지니어가 알려주는 리눅스 기초편 Bash Shell Script

고급 명령어(3)

쉘 스크립트 안에서

해결된 질문

22.03.07 19:03 작성

·

275

0

awk_chk.awk 파일의 내용을
쉘 스크립트로 작성해보려고 노력해봤습니다.
결론부터 말하자면 정상적으로 결과값이 출력되기는 하는데
변수에 조금 더 간단하게 식을 넣을 수 있는 방법이 없을까요?
감사합니다
 
#!/bin/bash

PER=${1}

if [[ ${#} -ne 1 ]]; then
echo -e "해당 스크립트 사용방법\n${0} [PERCENT ( 1 ~ 100 % )]"
exit 1
fi


if [[ ${PER} -gt 100 ]] || [[ ${PER} -lt 0 ]]; then
echo -e "PERCENT : 1 ~ 100\n다시 입력해주세요"
exit 1
fi

if [[ ${PER} =~ [^0-9] ]]; then
echo -e "DISK PERCENT를 입력해주세요 [ 1 ~ 100 ]"
exit 1
fi



DISK_LISTS=($(df -h | awk '{gsub(/%/,""); print $5}' | grep -vi 'use'))
MNT=($(df -h | awk '{gsub(/%/,""); print $6}' | grep -vi "mounted" ))

for idx in "${!DISK_LISTS[@]}";
do
disk="${DISK_LISTS[${idx}]}"
mount="${MNT[${idx}]}"
if [[ $disk -ge ${PER} ]]; then
echo -e "${disk}\t${mount}\n"

fi
done

답변 1

1

그로스쿨님의 프로필 이미지
그로스쿨
지식공유자

2022. 03. 08. 10:04

앞에 입력값에 대한 조건을 추가해서 응용을 해 주셨네요.

변수에 식을 추가한다는 의미는 아마 앞쪽에 추가한 if문의 조건을 조금 더 간단하게 처리할 수 있는 가에 대한 질문인 것 같은데요.

저도 if문 대신 case문을 사용하는 정도 이외에는 떠오르는게 없네요.

case조건에 따라 반복하는 부분이 생긴다면 그건 함수로 만들어주고 호출하는 것이 좀 더 효율적일 것 같습니다.

쉘스크립트는 결과중심적인 절차형언어이기 때문에 결과만 제대로 나온다면 무엇이든 상관이 없다고 생각하는 것이 실무자들 사이에서의 정설(...)이라고 생각합니다.

열심히 하시는 모습이 저에게도 힘이 됩니다. 응원할게요!!!!

앙앙기모님의 프로필 이미지
앙앙기모
질문자

2022. 03. 08. 21:20

감사합니다 실전편까지 영심히 들어보겠습니당