Puncte:1

cum să constrângeți bash să se ocupe doar cu o parte din script

drapel ws

Când testez un script bash, am setat o comandă de ieșire pentru a restricționa totul doar la prima parte a codului.

Dar bash se ocupă întotdeauna de întregul script, dă mesaje de eroare la codul de mai jos al comenzii de ieșire.

Am doar soluția pentru a comenta toate de mai jos a ieșirii mele de depanare.

Acest lucru este incomod și acel articol există de 30 de ani.

Există între timp în bash ceva de genul __END__ în perl?

Într-o coajă, resp. în Emacs, cu ani în urmă, exista posibilitatea de a evidenția o parte din cod și de a rula un subshell pe acest cod evidențiat.

O astfel de modalitate nu o găsesc în kubuntu 20.04, în vim.

Dar nu ar fi soluția dorită, deoarece necesită multă muncă.

Salutari antondhidh

drapel hr
Puteți adăuga un scurt exemplu reproductibil de „ieșire” care nu funcționează?
terdon avatar
drapel cn
Puteți explica de ce este incomod să comentați pur și simplu restul? Orice editor decent și, desigur, toate IDE-urile, va oferi o comandă rapidă simplă pentru a comenta/decomenta codul, așa că este o chestiune de a-l selecta și de a apăsa comanda rapidă. Pe emacs-ul meu, de exemplu, pot comuta comentarea folosind comanda rapidă `C-c c` care este legată de `comment-or-uncomment-region`.
Artur Meinild avatar
drapel vn
Construiește-ți scriptul folosind funcții. În acest fel, puteți avea o mulțime de cod, dar apelați doar funcțiile specifice de care aveți nevoie. Pentru o remediere ușoară, puteți face ca întreaga parte a scriptului pe care nu doriți să ruleze o funcție, așa că trebuie să adăugați: `unused() {` înainte și `}` după.
drapel ar
Vă rugăm să [editați întrebarea](https://askubuntu.com/posts/1394155/edit) și adăugați cum apelați scriptul. De exemplu, făcând dublu clic sau prin `./scriptname` sau prin `bash scriptname` sau prin alte mijloace. Includeți și un scurt scenariu. Nu pot reproduce această problemă cu un script de 4 linii: `#!/bin/bash` âµ `echo first line` âµ `exit` âµ `echo a doua linie` âµ, de exemplu.
terdon avatar
drapel cn
@user68186 Cred că OP vorbește despre a avea linii malformate după `ieșire`, așa că scriptul tău nu l-ar reproduce, dar nici eu nu pot reproduce cu linii malformate. Bash citește scriptul linie cu linie, așa că nu ar trebui să se plângă de linii proaste după un apel de ieșire.
drapel ar
@terdon sunt de acord. Ceea ce vine după `exit` malformat sau nu, nu trebuie executat deloc. Folosesc `exit` în bash tot timpul, de obicei cu o condiție `if` fără nicio problemă.
Terrance avatar
drapel id
Puteți rula oricând `bash -x ./scriptfile.bsh` pentru a vă afișa liniile așa cum rulează în scriptul dumneavoastră.
waltinator avatar
drapel it
Lipiți întotdeauna scriptul în `https://shellcheck.net`, un verificator de sintaxă sau instalați `shellcheck` local. Utilizarea „shellcheck” este parte a procesului de dezvoltare.
Anton Wessel avatar
drapel ws
Multumesc pentru multe raspunsuri.Utilitarul „shellcheck” îl știu acum, dar bash nu ar trebui să aibă problema descrisă chiar și fără internet și fără shellcheck., dar numai

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.