Нужна ваша помощь по приведенному ниже сценарию, в котором я тестирую, если файл найден в папке /log /TestFile * и в идентификаторе есть только один файл, тогда он будет отображать "Файл успешно найден", иначе "Заметка найдена". мое второе условие - [$ 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

2 ответа2

0

Извините, я должен исправить выше и работает нормально

----------------- 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
0

Вы можете получить количество файлов намного проще, выполнив следующие действия:

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .