我正在编写一个非常简单的脚本,但遇到了一些愚蠢的问题。基本上,我有一个文本文件,其中每行由 3 个单词组成,单词之间用空格隔开。当您 cat 该文件时,它会正确显示所有内容。例如,cat 该文件看起来像这样:
bird dog mouse
ferret bunny hare
我正在做一个简单的 for 循环,如下所示:
for line in $(cat pets.txt)
do
echo $line
"command $line"
done
echo 显示问题。该命令需要按以下方式运行:
command bird dog mouse
相反,它运行为
command bird
command dog
command mouse
这看起来应该是一个简单的修复,但我无法正确使用搜索词来找到解决方案。
谢谢!
答案1
问题是,cat
在子 shell 中使用这样的替换将使 bash 根据 标记输出IFS
,默认情况下包含空格。这是for
循环的正常行为。可能最简单的解决方法是:
while read line
do
echo $line
command $line
done < pets.txt
但是请注意,这bash
会将参数拆分为command
。如果您希望将该行作为一个参数,则只需引用它:
while read line
do
echo $line
command "$line"
done < pets.txt