Unix一次将文件存储在一个变量中


1

如何在变量1中存储多个文件。

for f in *.biz
do
file="$(ls *.biz)"
echo " $file"
done

但这是输出

 minimum.biz
 maximum.biz
 milan.biz
 ritz.biz <-------------1
 minimum.biz
 maximum.biz
 milan.biz
 ritz.biz <-------------2
 minimum.biz
 maximum.biz
 milan.biz
 ritz.biz  <------------3
 minimum.biz
 maximum.biz
 milan.biz
 ritz.biz  <------------4

好吧,你可以看到程序一次性存储所有这些程序,并且无缘无故地程序再迭代3次。

有任何想法吗???提前致谢


什么壳?击?
Journeyman Geek

Ksh和Zsh,第一个将是我的首要任务
驾驶2016年

Answers:


0

你有四个.biz文件。因此for f in *.biz; do ... done将形成一个迭代四次的循环。 在第一次迭代,第二次迭代,第三次迭代和第四次迭代中分别$f赋值。minimum.bizmaximum.bizmilan.bizritz.biz

在循环内部,即

file="$(ls *.biz)"
echo " $file"

$ file分配了四个文件名,该echo语句打印所有四个.biz文件名。

请尝试这个,你会了解更多:

for f in *.biz
do
echo "-- Inside loop $f --"
file="$(ls *.biz)"
echo " $file"
done

更新: 从您的评论我假设你只是想迭代文件,下面修改的代码应该工作:

for f in *.biz
do
echo " $f"
done

@ Kenneth感谢您的回复,我正在尝试存储一个文件。在变量中,我可以对该变量应用一组命令。一旦完成,脚本会在该变量中存储另一个文件....
驱动2016年

@Driven请查看我对答案的更新。我不确定你是否对你提到的“那个变量”感到困惑 - 实际上有两个变量$f$file。为简单起见,我选择$f
Kenneth L

非常感谢非常简单易行,我没有别的可说。
驱动
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.