迭代用户输入

时间:2014-01-21 03:22:39

标签: linux bash

我有一个与此类似的bash脚本:

echo Enter a sentence
read line
for $x in $line ; do
echo $x
done

但是,它只回显整个输入而不是输入中的每个单词。这是为什么?有没有办法解决这个问题而不知道要输入的单词数,使用for循环,最好不使用read -a选项,因为我知道如何使这个工作,但我不相信它符合已经施加的要求。

由于 OSFTW

2 个答案:

答案 0 :(得分:2)

请改为尝试:

for x in $(echo "$line")

答案 1 :(得分:1)

不知道为什么会这样,但你的标题中不应该有$,假设你的IFS是正确的,它应该按预期工作

#!/bin/bash
echo Enter a sentence
read line
IFS=$' \t\n' #reset to default IFS
for x in $line ; do
  echo "$x"
done

e.g。

> ./script 
Enter a sentence
a b c d
a
b
c
d