我正在编写一个脚本,我需要在不显示文件的情况下列出文件。下面的脚本在执行时列出了我不想做的文件。只想检查目录中是否有文件然后执行“执行案例2”。
ls -lrt /a/b/c/
if [ $? != 0 ]
then
echo "executing case 2"
else
echo "
日期+%D''%T No files found to process" >> $LOG
答案 0 :(得分:0)
测试ls
的返回代码对你来说不会有太多好处,因为在列出目录的两种情况下它都会返回零。
您可以使用grep
执行此操作。
e.g:
ls | grep .
echo $?
如果grep匹配任何内容(文件存在),这将是'true'。如果不是,那就错了。
所以在你的例子中:
ls | grep .
if [ $? -eq 0 ]
then
echo "Directory has contents"
else
echo "directory is empty"
fi
虽然做这类事情时要小心 - 看起来你正处于忙碌等待测试的危险之中,这会让系统管理员感到不快。
答案 1 :(得分:0)
如果您不需要查看 ls 的输出,您可以将其设为条件:
[ "$(ls -lrt a/b/c)" ] && echo "Not Empty" || echo "Empty"
或者更好
[ "$(ls -A a/b/c)" ] && echo "Not Empty" || echo "Empty"
因为您不关心长输出(l)或显示顺序(rt)。
在脚本中,您可以在 if 语句中使用它:
#!/bin/sh
if [ "$(ls -A a/b/c)" ]; then
echo "Not empty"
else
echo "Empty"
fi