Dav*_*ave 7 unix bash scripting
使用bash,如何编写if语句来检查存储在名为"$ DIR"的脚本变量中的某个目录是否包含不是"."的子目录.要么 ".."?
谢谢, - 戴夫
AlG*_*AlG 11
这是一种方式:
#!/usr/bin/bash
subdircount=`find /d/temp/ -maxdepth 1 -type d | wc -l`
if [ $subdircount -eq 2 ]
then
echo "none of interest"
else
echo "something is in there"
fi
Run Code Online (Sandbox Code Playgroud)
这是一个更简约的解决方案,它将在一行中执行测试。
ls $DIR/*/ >/dev/null 2>&1 ;
if [ $? == 0 ];
then
echo Subdirs
else
echo No-subdirs
fi
Run Code Online (Sandbox Code Playgroud)
通过将通配符放在/后面,*您仅选择目录,因此,如果没有目录,则ls返回错误状态2并输出消息ls: cannot access <dir>/*/: No such file or directory。在2>&1捕获标准错误和管道入标准输出,然后一大堆得到管道输送到零(这摆脱了常规的LS输出过,当有文件)。