Mi scuso in anticipo se questa è una domanda duplicata. Ho fatto uno sforzo per cercare / controllare prima di chiedere qui.
Sono a mio agio con la scrittura di una riga come questa:
foocommand && foocommand2 && foocommand3
L'idea è che voglio solo i successivi comandi da eseguire se il precedente ha avuto successo.
Sto scrivendo una sceneggiatura piuttosto lunga e questo one-liner non è fattibile perché sembra un enorme blocco di codice confuso per tutti gli altri.
Voglio spaziare i comandi e scrivere commenti tra loro nello script. Come posso fare questo e avere ancora l'equivalente di && lì dentro?
||e &&(al contrario di |o &) è chiamato corto circuito. Il comportamento usato con questi ultimi operatori è chiamato valutazione desiderosa.
a && b && cverrà eseguito solo in bcaso di asuccesso, quindi "funziona solo cse briesce" e "funziona solo cse aed bentrambi hanno successo" sono istruzioni equivalenti: bnon possono avere successo se non ci sono ariuscite.
a || b && cè più illustrativo.
true || false && echo hiverrà emesso hi. La specifica recita, Gli operatori "&&" e "||" deve avere la stessa precedenza e deve essere valutato con associatività di sinistra.
&&non significa che il comando successivo verrà eseguito se il precedente uno ha avuto successo. Significa che il comando verrà eseguito se il risultato collettivo di tutti i comandi precedenti nell'elenco dei comandi ha esito positivo. Potresti saperlo, ma i futuri lettori potrebbero fraintendere.