需要您对以下脚本的帮助,我正在测试是否在位置 /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