bash-将“查找”结果分配给变量时奇怪的行为



我正在尝试通过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

相关内容

  • 没有找到相关文章

最新更新