Bash 以不同格式读取数组

Bash 以不同格式读取数组

我使用下面的脚本来读取文章,然后显示文章。

echo " Please enter device no"
read -a articles
index=0
count=${#articles[@]}
echo "The number of articles are  $count"
while [ $index -lt $count ]
  do
    echo ${articles[$index]}
    index=$index+1
  done

但问题是,我需要通过空格来提供冠词,例如article1 article2 article3

有什么办法吗,我可以通过逗号输入吗article1, article2, article3

数组应该以两种方式接受(逗号或空格)吗?

任何指点都值得赞赏!

答案1

$index无法像这样增加。请尝试使用:

index=$((index+1))  # Universal shell (POSIX)

或者

((index++))         # bash 

答案2

先定义您自己的 IFSread

man Bash

独立财务顾问:内部字段分隔符,用于扩展后的分词以及使用内置命令 read 将行拆分为单词。默认值为<space><tab><newline>

$ IFS=' ,' read -a foo
cat dog sheep

$ printf '%s\n' ${foo[@]}
cat
dog
sheep

$ IFS=' ,' read -a foo
cat, dog, sheep

$ printf '%s\n' ${foo[@]}
cat
dog
sheep

之后一定要将 IFS var 重置为默认值

相关内容