Если существует несколько файлов - PullRequest
1 голос
/ 12 апреля 2019

У меня есть оператор IF в скрипте bash, который проверяет, существует шесть файлов или нет.

Код Bash

if [ -f file1.txt ] && [ -f file2.txt ] && [ -f file3.txt ] && [ -f file4.txt ] && [ -f file5.txt ] && [ -f file6.txt ];
then
echo "Required Files Exist"
else
echo "Required Files Do Not Exist"
fi

Ожидаемый результат

Required Files Exist

Фактический результат

Required Files Do Not Exist

Все файлы существуют

Ответы [ 2 ]

2 голосов
/ 12 апреля 2019

Ваш код должен работать нормально, если действительно все шесть файлов существуют в текущем каталоге.

Вы можете реорганизовать его, чтобы уменьшить дублирование кода.

all_exist () {
    local filename
    for filename; do
        test -f "$filename" && continue
        echo "$0: $filename does not exist - aborting" >&2
        return 1
    done
    return 0
}

all_exist file1.txt file2.txt file3.txt file4.txt file5.txt file6.txt && echo "$0: all files exist" >&2

Если ваши файлы действительно названы так однозначно, возможно, просто

all_exist file{1..6}.txt
0 голосов
/ 12 апреля 2019

Вы запускаете скрипт из другого каталога.

Например: вы находитесь в /root/ и запускаете скрипт /root/script/script.sh

, вы будете искать файлы в /root/, ноне в /root/script/.

Перед запуском скрипта попробуйте: touch file{1..6}.txt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...