getopts在linux shell脚本中抛出无效参数错误

时间:2018-02-09 12:09:49

标签: linux getopts

我正在尝试使用运行时传递的getopts参数运行shell代码。但是在脚本之下会抛出"无效的参数"错误。

strt_tim=`date`
while getopts dir:day:size: arg; do
case "$arg" in
dir) dirnm="$OPTARG";;
day) dy="$OPTARG";;
siz) sz="$OPTARG";;
*) echo "Invalid arg";;
esac
done
echo
find $dirnm -mtime -$dy -size +$szM -exec ls -lh \
{} \; | awk '{print $3, $4, $5, $6, $7, $8, $9}'

Executing shell script:

sh delutil.sh -dir /path/of/dir/ -day 10 -siz 100

有人可以帮我解决脚本失败的原因吗?

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

getopts 仅解析单个字符参数。您需要像解释here一样解析$opt变量。

如果需要长参数解析,请使用巧妙的不同名称getopt

也就是说,您的脚本中存在大量拼写错误:例如size应为siz
另外,在内联插入变量时要小心:$szM将被解释为variable szM而不是variable sz M.您需要将其写为${sz}M