我使用下面的脚本来读取文章,然后显示文章。
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 重置为默认值