我希望使用getopts
函数多次运行命令,具体取决于为shell提供的参数数量。
以下是script.sh
:
#!/bin/bash
while getopts "i" flag
do
case "$flag" in
i) name="$OPTARG";;
esac
done
echo $name
我希望echo
命令运行的次数与给出的名称一样多。例如,如果我运行./script.sh -i One, Two, Three, Four
,我希望脚本运行echo
4次,并将名称打印到shell。
答案 0 :(得分:2)
理想情况下,您将单个逗号分隔的单词作为-i
的参数,然后将其拆分为逗号(注意:由于使用需要bash
数组和-a
的{{1}}选项。
read
然后以下内容应该有效:
while getopts "i:" flag
do
case "$flag" in
i) IFS=, read -a names <<< "$OPTARG";;
esac
done
printf '%s\n' "${names[@]}"
$ ./script.sh -i One,Two,Three,Four
One
Two
Three
Four
并非真正设计用于处理选项的任意数量的参数。
答案 1 :(得分:0)
我会做这样的事情:
#!/bin/bash
if
[[ "$1" = -i ]]
then
shift
for arg in "$@"
do
echo "$arg"
done
fi
根据您需要处理的其他选项,它可能在您的具体情况下不起作用,但我缺乏确定的信息。