我有一个包含多行的txt文件。我正在将内容写入变量。现在我想循环遍历每个变量,并且在同一步骤中我只想切出一行,并将这部分放在一个远程命令中。
该文件是一个名为$output
我将其写在变量中:checkuser1=$(<$output)
现在我想循环遍历此变量的每一行并仅从中剪切一个特定部分,并将此部分放入一个单独的远程命令中。
我试过这样的事情:
checkuser1=$(<$output)
for line in $checkuser1 ; do
echo "hallo" >> /tmp/file
done
它给了我
hallo
hallo
hallo....
等等。
我该如何逐行工作?
答案 0 :(得分:0)
你可以用$ line做一些例子
NEW=$(echo $line|cut -c 2,4)
这将从$ line中提取某些字符(有关详细信息,请参阅man cut
)。
然后,您可以将其传递给命令,如下所示:
touch $NEW
如果你想为每一行运行它,那么命令也应该在for循环中。
答案 1 :(得分:0)
根据您在评论中所说的内容,您可以使用while read
循环实现您想要的效果:
while read -r username quota junk; do
# some command using "$quota"
done < "$output"
这将逐行读取名称存储在变量$output
中的文件,将变量$username
和$quota
分别设置为第一个和第二个字段中的值。该行的其余部分进入变量$junk
。
-r
开关阻止shell尝试解释文件中的转义序列,这几乎总是你想要的。