почему:
#!/bin/bash
wtf=false
if [ $wtf ] || [ ! -f filethatexists.whatever ]
then
echo "WTF1"
fi
if [ ! -f filethatexists.whatever ]
then
echo "WTF2"
fi
печатает:
WTF1
вместо ничего? Особенно вызывает недоумение то, что вторая форма работает так, как ожидалось, а первая - нет.