我正在尝试通过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
来解决此问题,但是我想知道此问题的根本原因。
谢谢。
使用
echo "$myvar"
验证输出。没有括号,*
可能会得到评估。
我认为这与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