我试图运行一个shell代码,运行时传递getopts参数。但下面的脚本正在抛出“无效参数”错误。
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
有人能帮我解释一下剧本失败的原因吗?
多谢提前。
最佳答案
getopts只分析单字符参数。您需要像解释的那样解析$opt
变量。
如果您需要长参数解析,请使用与here略有不同的名称。
也就是说,脚本中有很多错误:例如size
应该是siz
。
另外,在内联插入变量时要小心:$szM
将被解释为variable szM
而不是variable sz
M。您需要将其写为${sz}M
。
关于linux - getopts在Linux Shell脚本中引发无效参数错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48705536/