Ich würde gerne wissen, ob diese beiden Möglichkeiten gleichwertig sind:
Zuerst:
#!/bin/bash
if [ -x $FILE ]
then
echo "You have execution permission to a "$FILE""
else
echo "You don't have execution permission to a "$FILE""
fi
Zweite:
#!/bin/bash
[ -x $FILE ] && echo "You have execution permission to a "$FILE"" || echo "You don't have execution permission to a "$FILE""
shell-script
user3014282
quelle
quelle
[ -x "$FILE" ]
;echo "You have execution permission to '$FILE'"
IFS
Zeichen).Antworten:
Die Strukturen sind im Allgemeinen nicht gleichwertig, in diesem Fall jedoch. Der Grund ist, dass
echo
immer Exit-Code 0 vorhanden ist. Wenn dies stattdessen ein Befehl wäre, der mit einem Code größer als Null beendet werden kann, würde auch "der andere Zweig" ausgeführt. Dies ist in diesemif
Fall nicht möglich.quelle
if
Fall ist auch viel besser lesbar.[ -e /tmp ] && { echo 1 ; false ; } || echo 2
werden beide1
und gedruckt2
. Wenn Sie dasselbe mit neu erstellen,if ... then ... else ... fi
wird nur gedruckt1
. Ist&&
||
also kein genaues Äquivalent zum anderen.