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