Bash:For循环连接结果而不是分配单独的行;

时间:2014-07-10 15:46:48

标签: bash glob

此代码解析一个文件夹,如果该文件夹包含多个子文件夹/文件,则它们在一行上连接,其间有空格(subfolder1子文件夹2子文件夹3 / yo)而不是(subfolder1 / yo)换行符(子文件夹2 / yo)等。我每行需要一个子文件夹(如果目录中只有一个子文件夹,它会按预期工作)。

有什么建议吗?

FolderName=/yo
SUBDOMAINS=/data

for sourceX in "$SUBDOMAINS/*"
do
echo $sourceX $FolderName

done

2 个答案:

答案 0 :(得分:3)

"$SUBDOMAINS/*"中的Glob char不得引用:

"$SUBDOMAINS"/*

更好地引用你的论点:

echo "$sourceX" "$FolderName"

答案 1 :(得分:1)

删除globbing *周围的引号。你想要变量周围的引号,但不是在glob周围。您告诉shell将glob扩展的文件列表转换为一个字符串,然后循环遍历该字符串并将其打印出来。

您可能还希望回显线中的变量引用(尽管这与此问题无关)。