尝试将带有定界符的参数解析为Shell脚本中的数组时出错

时间:2018-09-03 10:14:04

标签: bash shell

我想使用命令行参数进行输入。参数将由定界符“;”分隔。我为此编写了以下shell脚本:

arg=$1
echo "Input : $arg"
if [ arg != "" ]; then
    echo "input(s) given...."
    IFS=';' read -d '' -ra ADDR <<<"$arg"
    echo "${ADDR[0]}"
    echo "${ADDR[1]}"
    echo "${ADDR[2]}"
    for i in "${ADDR[@]}"; do
        echo "$i"
    done
fi

以上所述,当我以./script.sh a;b;c身份运行时,正在发生以下情况:

(预期:ADDR [0] = a,ADDR [1] = b,addr [2] = c,) 输出:

$ ./script.sh a;b;c


Input : a

input(s) given....
a



a

b: command not found
c: command not found

我在这里做错了什么?显然,$1不是a; b; c,而只是a。如何根据我的要求工作?

1 个答案:

答案 0 :(得分:1)

;是用于分隔命令的字符。

尝试:./script.sh 'a;b;c'