我试图通过bash脚本进行一些简单的目录修改,但我遇到了一些奇怪的行为(OSX 10.6)。
当我在目标目录中发出以下命令时,我在尝试搜索目录/文件夹时从find
命令获得预期结果,即:
find . -iname "*" -type d
Results:
dir1
dir2
dir3
但是,当我尝试将结果分配给变量并打印它时,我会得到一些非常不同的行为:
myvar=$(find . -iname "*" -type d)
echo $myvar
Results:
dir1
dir2
dir3
dir3
dir3
dir3
最终条目重复多次是否有意义?我现在可以通过将输出汇总到sort -u
来解决这个问题,但我想知道这个问题的根本原因。
谢谢。
答案 0 :(得分:3)
使用
echo "$myvar"
验证输出。如果没有括号,可能会评估*
。
答案 1 :(得分:0)
我认为它与find
命令中的输出错误有关。现在它显示以下内容:
myvar=$(find . -iname "*" -type d)
echo $myvar
Results:
dir1
dir2
dir3
dir3/subdir1
dir3/subdir2
dir3/subdir3
之前显示:
Results:
dir1
dir2
dir3
dir3
dir3
dir3
我不确定为什么没有显示子目录,但我保证我现在也不需要使用sort -u
来指定深度:
myvar=$(find . -iname "*" -type d -maxdepth 1)
Results:
dir1
dir2
dir3