Puncte:3

nereușind să adauge o ieșire la această buclă

drapel ag

Totuși, am găsit acest script interesant care atrage zăpadă în interiorul terminalului dvs.... Aș dori să am o opțiune de a tasta „q” în orice moment pentru a ieși din buclă. Asta am;

 

 LINES=$(tput lines)
COLUMNS=$(tput cols)
 
declara -A fulgi de nea
declara -A last flakes
 
clar

funcția move_flake() {    

i="$1"
 
dacă [ "${fulgi de zăpadă[$i]}" = "" ] || [ "${snowflakes[$i]}" = "$LINES" ]; atunci
fulgi de nea[$i]=0
altfel
if [ "${lastflakes[$i]}" != "" ]; atunci
printf "\033[%s;%sH \033[1;1H " ${lastflakes[$i]} $i
fi
fi
 
printf „\033[%s;%sH*\033[1;1H” ${fulgi de zăpadă[$i]} $i
 
lastflakes[$i]=${fulgi de zăpadă[$i]}
fulgi de zăpadă[$i]=$((${fulgi de zăpadă[$i]}+1))
}
 
in timp ce :
do
    
i=$(($RANDOM % $COLUMNS))
 
muta_fulg $i

pentru x în „${!lastflakes[@]}”
do
move_flake „$x”
Terminat
 
somn 0.1
Terminat

asta am încercat să adaug;

echo „Tastați „q” pentru a ieși”
în timp ce citește -n1 -r -p "doriți să părăsiți scriptul?"
do
    dacă [[ $REPLY == q ]];
    atunci
        pauză;
    altfel
        #tot ceea ce
    fi
Terminat

l-a adăugat în interiorul funcției, dar cereți doar „q” la început. apoi am încercat să adauge scriptul real în bucla de ieșire și trage doar un fulg de zăpadă, apoi întreb din nou dacă vreau să ies.... Ai idee cum să faci asta să funcționeze?

terdon avatar
drapel cn
De ce nu folosești Ctrl+C pentru a ieși?
Puncte:5
drapel jp

O poți face așa în coajă bash: Inlocuieste dormi comanda cu a citit comandă, care are un timeout, și let in timp ce verificați pentru dvs 'q'. Vedea

ajuta la citire | Mai puțin

Iată versiunea mea a spectacolului tău de zăpadă,

#!/bin/bash

LINES=$(tput lines)
COLUMNS=$(tput cols)

declara -A fulgi de nea
declara -A last flakes
 
clar

funcția move_flake() {    

i="$1"
 
dacă [ "${fulgi de zăpadă[$i]}" = "" ] || [ "${snowflakes[$i]}" = "$LINES" ]; atunci
fulgi de nea[$i]=0
altfel
if [ "${lastflakes[$i]}" != "" ]; atunci
printf "\033[%s;%sH \033[1;1H " ${lastflakes[$i]} $i
fi
fi
 
printf „\033[%s;%sH*\033[1;1H” ${fulgi de zăpadă[$i]} $i
 
lastflakes[$i]=${fulgi de zăpadă[$i]}
fulgi de zăpadă[$i]=$((${fulgi de zăpadă[$i]}+1))
}
 
în timp ce [ "$ans" != "q" ]
do
    
 i=$(($RANDOM % $COLUMNS))
 
 muta_fulg $i

 pentru x în „${!lastflakes[@]}”
 do
  move_flake „$x”
 Terminat
 citeste -sn 1 -t 0,1 ans
Terminat
terdon avatar
drapel cn
Ha! Nu știam că `read` lui bash are o opțiune de timeout. Grozav!
sudodus avatar
drapel jp
@terdon, Da, este o opțiune bună. L-am folosit de mai multe ori în scripturile mele :-)
WinEunuuchs2Unix avatar
drapel in
@terdon Va trebui să citesc și eu mai multe despre comanda `citește` :P
Erniemenendez avatar
drapel ag
FANTASTIC!!! Mulțumesc foarte mult!!!!
sudodus avatar
drapel jp
Sunteți binevenit @Erniemenendez :-) Mi-a plăcut ecranul care zăpada, obișnuiam să mă pregătesc pentru iarnă... l-am făcut pe întreg ecranul cu `xterm`: `xterm -fullscreen -e bash -c 'sleep 1;./snow' ` din directorul unde am pus scriptul. Dacă lăsați zăpada să se topească pe pământ, va fi un screensaver simplu, dar drăguț.

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.