Tôi đang cố gắng học cách sử dụng getopts để tôi có thể có các tập lệnh với đầu vào được phân tích cú pháp (mặc dù tôi nghĩ getopts có thể tốt hơn). Tôi đang cố gắng chỉ viết một tập lệnh đơn giản để trả về tỷ lệ phần trăm sử dụng phân vùng. Vấn đề là một trong các hàm bash của tôi dường như không thích mà tôi tham chiếu $1
như một biến trong hàm. Lý do tôi tham chiếu $1
là vì get_percent
chức năng có thể được thông qua một điểm gắn kết như là một đối số tùy chọn để hiển thị thay vì tất cả các điểm gắn kết.
Kịch bản
#!/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
# ...
Đầu ra
$ 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
, phải không? Kịch bản của bạn thoát do-u
trước khi gọigetopts
.