Използвах следния скрипт, за да проверя дали даден файл съществува:
#!/bin/bash
FILE=$1
if [ -f $FILE ]; then
echo "File $FILE exists."
else
echo "File $FILE does not exist."
fi
Какъв е правилният синтаксис, който трябва да използвам, ако искам да проверя само дали файлът не съществува?
#!/bin/bash
FILE=$1
if [ $FILE does not exist ]; then
echo "File $FILE does not exist."
fi
Командата test ([
тук) има логически оператор "not", който представлява възклицателен знак (подобно на много други езици). Опитайте това:
if [ ! -f /tmp/foo.txt ]; then
echo "File not found!"
fi
Можете да отречете даден израз с "!":
#!/bin/bash
FILE=$1
if [ ! -f "$FILE" ]
then
echo "File $FILE does not exist"
fi
Съответната man страница е man test
или, еквивалентно, man [
-- или help test
или help [
за вградената команда bash.
[[ -f $FILE ]] || printf '%s does not exist!\n' "$FILE"
Възможно е също така файлът да е счупена символична връзка или необичаен файл, като например сокет, устройство или fifo. Например, за да добавите проверка за счупени симлинкове:
if [[ ! -f $FILE ]]; then
if [[ -L $FILE ]]; then
printf '%s is a broken symlink!\n' "$FILE"
else
printf '%s does not exist!\n' "$FILE"
fi
fi