Kezdőoldal » Számítástechnika » Programozás » BASH (Bourne Again Shell)...

BASH (Bourne Again Shell) While ciklus, reguláris kifejezés. Lehet? Ha igen, hogyan?

Figyelt kérdés

Sziasztok! Elég kezdő vagyok BASH programozásban, de érdekel a téma!


A kérdésem az lenne hogy, while ciklusnál lehet-e egyáltalán reguláris kifejezést megadni feltételnek? Ha igen, hogyan?


próbáltam így

read nev

while [ $nev = [0-9] ]

do

echo "Hiba! Nem név!"

echo "Próbáld újra!"

read $nev

done


De sajna nem jött össze! Ezenkívül próbáltam egy csomó "variációt" while [ $nev = [0-9]* ] [ $nev =[0-9] ] [ $nev = ([0-9]) ] [[ $nev = [0-9] ]]


De semmi :(


Várom a szakikat :)


2011. ápr. 6. 21:39
1 2
 1/12 A kérdező kommentje:

Ja, elnézést elfelejtettem a cél-t leírni...

Azt szeretném hogy ha a 'nev' változó számot tartalmaz, akkor ahogy a do-done között lévő sorokból is kiderül, kérdezze újra a nevet és csak akkor lépjen tovább ha szám NÉLKÜLI értéket adnak a 'nev'-nek

és így tovább (pl első betű NAGY betű legyen) csak már az elején megakadtam :(

2011. ápr. 6. 21:45
 2/12 anonim ***** válasza:
2011. ápr. 6. 21:51
Hasznos számodra ez a válasz?
 3/12 Tom Benko ***** válasza:
Csak eldöntendő kérdést lehet neki adni (igen/nem). Az általad mondott célra inkább a for <változó> in <lista> do <script> done ciklus felel meg.
2011. ápr. 6. 21:52
Hasznos számodra ez a válasz?
 4/12 A kérdező kommentje:

Köszönöm a válaszokat!


Benko Tom írnál egy példát?? Így nem nagyon értem...

megköszönném :)

2011. ápr. 6. 21:54
 5/12 Tom Benko ***** válasza:
Elolvasva a kommentet: awk lesz a te barátod. Mitől lesz egy változó szám?
2011. ápr. 6. 21:59
Hasznos számodra ez a válasz?
 6/12 A kérdező kommentje:

read nev

ez ugye azt jelenti hogy a user-től kéri a nevet!

na most az emberke azt is beírhatja hogy: "45262"

És hát ez nem név...

Azt szeretném ha ilyenkor újra kérdezné a nevet, és ezt egészen addig amíg nem ad megy egy normális nevet. pl Nagy Kázmér :)

2011. ápr. 6. 22:04
 7/12 Tom Benko ***** válasza:

Az X telepítésekor van ilyen:

for package in $(grep '^#' xlib-7.6.1.wget) do

<utasítások>

done 2>&1 xlib-build.log

Itt a package a változó, amit belül hivatkozni lehet, a listát pedig a grep segítségével állítom elő. De lehet például egy parancs kimenete is, csak azt előtte le kell védeni.

2011. ápr. 6. 22:04
Hasznos számodra ez a válasz?
 8/12 Tom Benko ***** válasza:

Hm. Így elég a grep is.

while 'echo <változó> | grep [0-9]' do

read <változó>

done

A változót az elején állítsd be valamilyen számértékre. Ez addig fog futni, amíg szerepel a <változó>-ban számjegy, azaz nem "értelmes szöveg".

2011. ápr. 6. 22:10
Hasznos számodra ez a válasz?
 9/12 A kérdező kommentje:

Köszi :)


Az awk-t (szintaxis) próbáltam kiguglizni, de nem megy, az angol távol áll tőlem... :)

2011. ápr. 6. 22:11
 10/12 Tom Benko ***** válasza:
Az awk egy okos kis eszköz, szöveget tud feldolgozni. Tkp. egy külön nyelv erre a célra. Szerintem van manpage-e magyarul is. Milyen disztrót használsz?
2011. ápr. 7. 22:34
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!