我正在制作一个bash脚本,就像这样:
#!/bin/bash
DNUM=$(ls -lAR / 2> /dev/null | grep '^d' | wc -l)
echo there are $DNUM directories.
问题是,当我直接在终端上运行此行时:
ls -lAR / 2> /dev/null | grep '^d' | wc -l
我得到一个号码。
但是当我运行脚本时,它会向我显示更多数字,例如30到50个。
这里有什么问题?
为什么“wc”命令在从脚本运行时会计算更多行?
答案 0 :(得分:1)
两次运行可能有不同的目录根。而不是ls
只能找到目录,您可以使用此
find parent_directory -type d
并管道到wc -l
来计算。
/proc
目录将具有进程并被视为目录,并将从运行更改为运行。要将其从计数中排除,请使用
find / -path /proc -prune -o -type d | wc -l
答案 1 :(得分:0)
为了找到您确切情况的差异,我建议您运行
sys
但是作为最多的人。已经说过排除像proc
,{{1}} ...... 这样的目录是有意义的