Použil jsem následující skript, abych zjistil, zda soubor existuje:
#!/bin/bash
FILE=$1
if [ -f $FILE ]; then
echo "File $FILE exists."
else
echo "File $FILE does not exist."
fi
Jaká je správná syntaxe, pokud chci pouze zkontrolovat, zda soubor neexistuje?
#!/bin/bash
FILE=$1
if [ $FILE does not exist ]; then
echo "File $FILE does not exist."
fi
Příkaz test ([
zde) má logický operátor "not", což je vykřičník (podobně jako v mnoha jiných jazycích). Vyzkoušejte tento příklad:
if [ ! -f /tmp/foo.txt ]; then
echo "File not found!"
fi
Výraz můžete negovat pomocí "!":
#!/bin/bash
FILE=$1
if [ ! -f "$FILE" ]
then
echo "File $FILE does not exist"
fi
Příslušná manuálová stránka je man test
nebo ekvivalentně man [
-- nebo help test
nebo help [
pro vestavěný příkaz bash.
[[ -f $FILE ]] || printf '%s does not exist!\n' "$FILE"
Je také možné, že soubor je nefunkční symbolický odkaz nebo neregulérní soubor, např. soket, zařízení nebo fifo. Chcete-li například přidat kontrolu nefunkčních symlinků:
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