需要有关 if 测试条件的帮助

需要有关 if 测试条件的帮助

需要您对以下脚本的帮助,我正在测试是否在位置 /log/TestFile* 找到文件并且 id 只有一个文件,那么它将显示“文件成功找到”,否则显示“未找到注释”。我的第二个条件 - [ $sfCount == 1 ]; 不起作用。请帮帮我。

sfCount=`ls -l /log/TestFile* | awk '{print $9}'| wc -l |sed "s/[[:blank:]]//g" | sed '/^$/d' | sed 's/\n//g'`
sFile=`ls -l /log/TestFile* | awk '{print $9}'`

if [ -e /log/$sFile ] && [ $sfCount == 1 ]; then
    echo "File successfully Found"
    exit 0
else 
    echo "File Not found"
    exit 1
fi

答案1

通过执行以下操作,您可以更轻松地获取文件数量:

ls /log/TestFile* | wc -l

这将减轻您的所有其他负担。我不确定您为什么要获取文件数量的计数,并将它们放入数组中以查看它们是否存在。从表面上看,您只是想看看如果它们存在。你只需要第一个命令。所以,我们剩下的是:

if [ $(ls /log/TestFile* 2>/dev/null | wc -l) != 0 ]; then
    echo "File Found"
else 
    echo "File not found"
fi

如果没有找到文件,则“2>/dev/null”将抑制输出到 STDERR。我们只想要 0,或者不想要 0。

答案2

抱歉,我必须纠正以上内容,它工作正常

----------------- Script start here ------------------------- 
sfCount=ls -l /log/TestFile* | awk '{print $9}'| wc -l |sed "s/[[:blank:]]//g" | sed '/^$/d' | sed 's/\n//g' 
sFile="TestFile*"

if [ -f $IB_DIR/$sFile ] && [ $sfCount == 1 ]; then
    echo "File successfully Found"
    exit 0
else 
    echo "File Not found"
    exit 1
fi

相关内容