У меня есть if
в моем скрипте bash, который должен проверить, существует ли ЛИБО из 2 файлов, если они не существуют, он должен совпадать.
Код у меня есть:
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
Но это, похоже, не работает по какой-то причине.
Я на 110% уверен, что эти 2 файла не существуют. Я не получаю никаких ошибок, он просто не входит if
.
Я новичок в сценарии Bash, поэтому я не уверен, что может быть не так.
[[ -f xxx ]]
возвращает true, если xxx существует и является обычным файлом (или символической ссылкой на обычный файл). Он вернет false, если он не существует, или если он не может сказать, существует ли он или нет, или если он существует, но не является обычным файлом (каталог, канал, устройство, сокет ...) или если это символическая ссылка к файлу, который не существует, или он не может определить, существует он или нет, или не является обычным файлом ... [[ -e $file ]] || [[ -L $file ]]
ближе к тесту на существование. ls -d -- "$file" > /dev/null 2>&1
еще ближе. И, как правило, этот вид испытаний приводит к условиям гонки. Может быть, есть другой способ.
[[ ! -f /etc/.../... ]]; echo $?
для каждого.