我在目录中有一堆* .rpm文件,并希望将每个迭代从我的for循环追加到文件中的新行。我该怎么做?问题是,对于当前输出,所有输出都写入第一行,而其他行留空。我希望我在每个文件中运行的输出在“x.txt”的新行中输出。
这就是我所拥有的:
for i in *;do
rpm --queryformat "%{NAME} %{VERSION} %{RELEASE} %{SourceRPM} %{Summary} %{Group} %{URL} %{ARCH}" -qp "$i" ;
done >> x.txt
有人可以帮忙吗?
答案 0 :(得分:3)
我有点惊讶rpm没有添加换行符。不过你可以手动添加一个。
没有换行符的示例:
$ rm -f a.txt ; for i in 1 2 3; do echo -n $i ; done >> a.txt
$ cat a.txt
123$
换行示例:
$ rm -f a.txt ; for i in 1 2 3; do echo -n $i ; echo ; done >> a.txt
$ cat a.txt
1
2
3
$
答案 1 :(得分:0)
根据您在问题中发布的信息,您只需在每次迭代结束时添加一条空的echo
指令。此操作在每次迭代产生的输出结尾处添加一个新行,正如@smoe尝试用简化示例解释的那样。
使其适应您问题中的已发布代码:
for i in *;do
rpm --queryformat "%{NAME} %{VERSION} %{RELEASE} %{SourceRPM} %{Summary} %{Group} %{URL} %{ARCH}" -qp "$i" ;
echo ;
done >> x.txt
答案 2 :(得分:0)
您应该自己添加换行符。
正确的答案是这样:
rpm -qa --qf "%{NAME}\n" > app.list