• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    해결됨

쉘 스크립트 안에서

22.03.07 19:03 작성 조회수 180

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

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

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

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

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

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

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

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