shell 在bash中使用一个参数传递多个值

j2cgzkjk  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(293)

我需要向一个参数传递多个值(每次传递的值的数量不同),但是我该如何做到呢?下面是我的代码:

usage() { echo "Usage: $0 [-i <string>]" 1>&2; exit 1; }

while getopts ":i:" o; do
    case "${o}" in
        i)
            i=${OPTARG}
            ;;
        *)
            usage
            ;;
    esac
done
vngu2lb8

vngu2lb81#

我在解析字符串中的值时使用了此解决方法。在脚本中将此用作分隔符

IFS=','

然后在将OPTARG分配给某个选项时,在该选项内部执行以下操作:

OPTION_STRING=${OPTARG}
# Check if there is multiple values passed with IFS delimeter
read -ra my_array <<<$OPTION_STRING

然后对于逻辑检查数组的长度,如果它大于1,则执行如下循环

if [ "${#my_array[@]}" -gt 1 ]; then
        # Do your something before the cycle
        # Cycling array for values
        for i in "${my_array[@]}"; do
            # Do what you need based on $i
        done

我想这是为时已晚的初步职位,但也许这可能会帮助别人。

相关问题