Bir dosyanın var olup olmadığını görmek için aşağıdaki betiği kullandım:
#!/bin/bash
FILE=$1
if [ -f $FILE ]; then
echo "File $FILE exists."
else
echo "File $FILE does not exist."
fi
Yalnızca dosyanın var olup olmadığını kontrol etmek istiyorsam kullanmam gereken doğru sözdizimi nedir?
#!/bin/bash
FILE=$1
if [ $FILE does not exist ]; then
echo "File $FILE does not exist."
fi
test]1 komutu ([
burada) ünlem işareti olan bir "not" mantıksal operatörüne sahiptir (diğer birçok dilde olduğu gibi). Bunu deneyin:
if [ ! -f /tmp/foo.txt ]; then
echo "File not found!"
fi
Bir ifadeyi "!" ile olumsuzlayabilirsiniz:
#!/bin/bash
FILE=$1
if [ ! -f "$FILE" ]
then
echo "File $FILE does not exist"
fi
İlgili man sayfası man test
veya eşdeğer olarak man [
-- veya yerleşik bash komutu için help test
veya help [
şeklindedir.
[[ -f $FILE ]] || printf '%s does not exist!\n' "$FILE"
Ayrıca, dosyanın bozuk bir sembolik bağlantı veya soket, aygıt veya fifo gibi normal olmayan bir dosya olması da mümkündür. Örneğin, kırık sembolik bağlantılar için bir kontrol eklemek için:
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