강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

deo01 のプロフィール画像
deo01

投稿した質問数

システムエンジニアが教えるLinux基礎編 Bash Shell Script

上級コマンド(3)

쉘 스크립트 안에서

解決済みの質問

作成

·

382

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
linuxshell-script

回答 1

1

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

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

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

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

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

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

deo01님의 프로필 이미지
deo01
質問者

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

 

deo01 のプロフィール画像
deo01

投稿した質問数

質問する