Puncte:0

Scriptul rulează ecou în mod normal, dar nu imprimă nimic pentru ecou în buclă

drapel cn

Încerc să scriu un script care deschide un terminal și face ecou în el. Am urmatoarele.

#!/usr/bin/bash

gnome-terminal -- /bin/bash -c "pentru i în 1 2 3; face echo $i; terminat; exec bash"

Când rulez acest script, arată trei linii goale și apoi execută bash. Totuși, dacă alerg pentru i în 1 2 3; face eco $i; Terminat; exec bash într-un terminal se tipărește normal. De asemenea, dacă scriu următoarele, se tipărește și în mod normal salut. Prin urmare, cred că este o problemă cu bucla for.

#!/usr/bin/bash

gnome-terminal -- /bin/bash -c „echo salut”

Nu am găsit pe nimeni cu o problemă similară.

drapel cn
Ray
De ce aveți `exec bash` la sfârșit? Nu sunt sigur dacă vrei să rulezi o buclă în bash și apoi să pornești un alt shell bash... Într-adevăr, ceva nu este în regulă cu codul tău, dar nu pot pune degetul pe el... Primești 3 linii goale deoarece este valoarea lui `$i`. Dacă, să spunem, puneți `i=10` și apoi rulați bucla, veți primi trei `10`, cred.
bac0n avatar
drapel cn
aveți nevoie de ghilimele simple sau `$i` va evalua, prin urmare ... linii goale
matticebox avatar
drapel cn
@Ray Am `exec bash` la sfârșit, astfel încât să mă pot uita la terminal după ce ecou în buclă. Am folosit somn înainte, dar m-am gândit că ar fi mai ușor să pornesc un alt shell bash. Sunt un noob și nu prea înțeleg ce vrei să spui prin `i=10`, dar dacă pun `10` în loc de `$i`, într-adevăr se afișează `10` de trei ori. Pur și simplu nu are sens pentru mine pentru că atunci când rulez codul cu `$i` într-un terminal, se afișează `1`, apoi `2`, apoi `3`. De exemplu, `for i in hello; face eco $i; done` va imprima `hello` într-un terminal.
matticebox avatar
drapel cn
@bac0n Am încercat `gnome-terminal -- /bin/bash -c "pentru i în 1 2 3; do echo '$i'; terminat; exec bash"` și încă arată linii goale, cu excepția cazului în care nu observ altceva am greșit.
bac0n avatar
drapel cn
nu, `/bin/bash -c 'pentru i în 1 2 3; face eco $i; Terminat; exec bash'`
matticebox avatar
drapel cn
@bac0n A funcționat, mulțumesc. Dar nu înțeleg ce se întâmplă exact... Credeam că folosirea ghilimelelor duble și simple a fost doar pentru a putea avea unul în celălalt.
Artur Meinild avatar
drapel vn
[Vezi aici](https://stackoverflow.com/questions/6697753/difference-between-single-and-double-quotes-in-bash).

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.