【发布时间】:2013-04-30 08:44:44
【问题描述】:
有人提示我在 Bash 脚本中使用 file globbing 代替 ls,在我的代码中,我按照说明操作并将 array=($(ls)) 替换为:
function list_files() { for f in *; do [[ -e $f ]] || continue done }
array=($(list_files))
但是新函数没有返回任何东西,我在这里做错了吗?
【问题讨论】:
-
$(function)被函数打印到标准输出的内容替换。您的函数不打印任何内容。 -
一旦你解决了这个问题,它并不能解决你的问题。解析
list_files函数的输出与解析ls的输出有同样的问题。如果文件名包含空格,则在分配给数组时将被视为两个名称。你需要在for循环中做任何你想做的事情。在该页面上的示例中,有一个...,您可以在其中对每个文件执行您想要的操作。 -
将问题标记为已回答的正确方法是接受其中一个答案,而不是在标题中添加“[已解决]”。
-
@Dan-SimonMyrland,请阅读 chepner 的上述评论。不要在标题中添加“已解决”。
-
如果问题得到解决,请用已接受的答案打勾/打勾标记对您最有帮助的答案(单击答案旁边的空心对勾标记)。如果您自己找到了答案,请将其添加为答案并尽可能接受。您不做的是“已解决”或与问题标题类似的任何内容。