1

我正在尝试通过 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问题,但我想知道这个问题的根本原因。

谢谢你。

4

2 回答 2

3

采用

 echo "$myvar"

验证输出。没有括号,*可能会被评估。

于 2012-10-23T13:49:15.983 回答
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
于 2012-10-23T15:42:29.637 回答