Děkuji a jaká je přesně rozdíl mezi tímto ?
test -d /root/.temp && mkdir /root/.temp
test -d /root/.temp || mkdir /root/.temp
V prvním případě (
&&) se
mkdir /root/.temp vykoná, pokud
test -d /root/.temp uspěje (návratová hodnota je 0). V druhém případě (
||) se
mkdir /root/.temp naopak vykoná, pokud
test -d /root/.temp selže (návratová hodnota je kladná).
Pokud jde tedy pouze o vytvoření adresáře, pokud neexistuje, jsou následující dva příkazy ekvivalentní:
test ! -d /root/.temp && mkdir /root/.temp
test -d /root/.temp || mkdir /root/.temp
Liší se však celkovou návratovou hodnotou, která odpovídá logickým operátorům
&& a
||, proto tyto příkazy už nejsou ekvivalentní, pokud se za ně navíc ještě připojí
|| exit 1. Pozor jen, že v shelu
0 znamená
true a kladná hodnota
false.