Vreau să automatizez câțiva pași de implementare.
Au un server de CD, rulează pe Linux (în bash). Proiectul este apoi configurat să ruleze scriptul bash pe serverul de aplicații real pentru a realiza implementarea. SSH este folosit pentru a conecta de la CD Runner la serverul real.
Întreaga configurare se bazează pe presupunerea că implementarea eșuată este semnalată de un cod de ieșire corespunzător diferit de zero.
Doriți să adăugați un plus de siguranță, astfel încât erorile de sintaxă să oprească/eșueze implementarea devreme. Cu toate acestea, Bash în mod implicit nu respectă convenția codurilor de ieșire pentru erorile de sintaxă din script. O_O
Din păcate, „/bin/sh -n ...” NU va returna diferit de zero la eroarea de sintaxă.
A doua tehnică încercată, " $(/bin/sh -n ...) | wc -c | ... ", nu reușește deoarece nu poate găsi fișierul script. Sunt derutat de acea eroare. Este același fișier/aceeași comandă ca în prima tehnică.
Detalii de configurare:
- CD runner rulând Linux și bash
- server de aplicații care rulează Windows și OpenSSH și bash
- deoarece cele două sunt instalări bash diferite, validarea trebuie să aibă loc în bash serverul de aplicații - deci prin SSH
Întrebare:
Am ratat vreo variabilă opțiune/flag/env care îi va instrui pe Bash să folosească un cod de ieșire diferit de zero pentru erorile de sintaxă?
Sau: De ce invocarea /bin/sh înconjurătoare cu $() ar face să eșueze?