Egy másik példával magyarázod az eredetileg redundáns vizsgálatodat. A
[ -e "$dir" ] && [ -d "$dir" ]
pontosan akkor lesz igaz, amikor önmagában a [ -d "$dir" ]
igaz. Létező file esetén az első vizsgálat ugyan igaz, de a második hamis, így ez ugyanazt eredményezi, mintha az első vizsgálat meg sem történt volna. Arról nem is beszélve, ami shell scriptekben mindig probléma, hogy a műveletek nem atomikusak: mi van, ha a két vizsgálat között jön létre az adott nevű file, vagy könyvtár, vagy múlik el onnan?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE