因此,我想传递2个参数,并希望将这些参数组合在一起并分别处理。我已经对开关盒进行了编码,以分别处理它们,但是我不确定如何一起处理它们。
$ sh match_the_pattern.sh -a 6 -b 5 words.txt
在这里
-a
:至少指定了字母数。-b
:最多指定字母数。我在寻找什么?
当我将-a
和-b
合并在一起时,脚本首先应列出所有具有给定单词数量的单词,然后保存,然后从其中使用{{ 1}},这是我们从-b
得到的结果中最多的字母,然后打印计数。
这是一个双重过滤器,不像您分别发布了它们。
-a
注意,我确实知道如何处理while [[ $# -gt 0 ]]; do
case $1 in
-a)
argument=$
egrep "^[[:alnum:]]{$argument,}$" $dictionyname | wc -l
shift ;;
-b)
arg=$2
egrep "^[[:alnum:]]{0,$argument}$" $dictionyname | wc -l
shift ;;
esac
shift
done
$ sh match_the_pattern.sh -a 6 -b 5 words.txt
7000
$ sh match_the_pattern.sh -a 6 words.txt
115690
$ sh match_the_pattern.sh -b 5 words.txt
12083
和-a
,不知道如何将-b
和-a
的结果一起传递给参数...
如果现在,我通过命令,则得到以下输出:
-b
所以它正在处理a和b,但是一个接一个地给出结果。
答案 0 :(得分:0)
根据参数设置变量,然后在循环后使用它们。
min=
max=
while [[ $# -gt 0 ]]; do
case $1 in
-a)
min=$2
shift ;;
-b)
max=$2
shift ;;
-*)
echo "Unknown option $1"
exit 1 ;;
*)
break ;;
esac
shift
done
if [[ -z $min && -z $max ]]
then
echo "At least one of -a and -b must be used"
exit 1
fi
egrep "^[[:alnum:]]{${min:-1},$max}$" "$@" | wc -l
${min:-1}
表示使用$min
的值,但如果为空,则使用1
。因此,如果他们不提供-a
,它将是{1,$max}
。