我正在尝试学习如何使用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
@ikkachu不,我猜不是。但是我不确定现在是否可以更改标题。
—
蒂莫西·皮里亚姆
帖子下应该有一个小的“编辑”文本,位于问题中标签的下面
—
ilkkachu
getopts
,不是吗?您的脚本因-u
调用之前退出getopts
。