for f in "$@"
do
echo # I'd like to skip this the first time
echo $f
print_info_about $f
done
这个 bash 脚本片段接受一些文件名并打印每个文件名和一些关于它的信息,它们之间有一个空行。
什么是避免不必要的初始空白行的干净方法?等效地,除了最后一次迭代之外,每次迭代之后
的干净方法是什么?echo
比拆分第一个(或最后一个)项目$@
并使用额外的print_info_about
.
理想情况下,就像 Ruby 一样干净,将所有内容累积到字符串数组中,然后.join("\n")
.
这将
separator='\n'
在第 2 次及以后的迭代中无效。但是分配是在 shell 内部的,因此速度很快,所以性能不应该受到影响。问题已标记
bash
,因此我修复了您的引用(未引用的变量在 中表现良好zsh
)。鞋底for f
相当于for f in "$@"
。请注意,上述解决方案不是“仅在第一次迭代后才做某事”的一般方法。它是为您的特定“东西”量身定制的(打印一个空行作为分隔符)。
以下通用方法检查变量是否不为空并
do_something
有条件地运行。如果您可以在最后一项之后有一个额外的空行,您可以这样做: