getopts를 사용하는 방법을 배우려고 노력하여 구문 분석 된 입력이있는 스크립트를 가질 수 있습니다 (getopts가 더 좋을 수도 있음). 파티션 사용률을 반환하는 간단한 스크립트를 작성하려고합니다. 문제는 내 bash 함수 중 하나가 함수 내 $1
에서 변수로 참조하는 것을 좋아하지 않는 것 입니다. 내가 참조하는 이유 $1
는 get_percent
함수가 모든 마운트 포인트 대신 표시 할 선택적 인수로 마운트 포인트를 전달할 수 있기 때문 입니다.
스크립트
#!/usr/bin/bash
set -e
set -u
set -o pipefail
get_percent(){
if [ -n "$1" ]
then
df -h $1 | tail -n +2 | awk '{ print $1,"\t",$5 }'
else
df -h | tail -n +2 | awk '{ print $1,"\t",$5 }'
fi
}
usage(){
echo "script usage: $(basename $0) [-h] [-p] [-m mount_point]" >&2
}
# If the user doesn't supply any arguments, we run the script as normal
if [ $# -eq 0 ];
then
get_percent
exit 0
fi
# ...
출력
$ bash thing.sh
thing.sh: line 8: $1: unbound variable
$ bash -x thing.sh
+ set -e
+ set -u
+ set -o pipefail
+ '[' 0 -eq 0 ']'
+ get_percent
thing.sh: line 8: $1: unbound variable
getopts
하지 않습니까?-u
를 호출 하기 전에 스크립트가 종료되었습니다getopts
.