Kezdőlap › Fórumok › Programozás › Bash script
- This topic has 437 hozzászólás, 56 résztvevő, and was last updated 13 years, 6 months telt el by
Goosfrabaa.
-
SzerzőBejegyzés
-
2006-10-14-09:15 #2053279
Sziasztok!
A következőben szeretném a segítségeteket kérni. If-el szeretném az első argumentumról eldönteni, hogy szám-e (ha szám függvény1 különben függvény2)?
2006-10-14-11:07 #2053280Milyen formájú is egy szám?
Ha ez megvan, akkor egy gyors tesztelés, és kész. Tehát mondjuk:Code:if [ `expr match $1 ‘[0-9]*’` -eq `expr length $1` ]; then
echo „Szám”
else
echo „Nem szám”
fiEredmény:
zsolt:~$ teszt x
Nem szám
zsolt:~$ teszt 12
Szám
zsolt:~$ teszt 12a
Nem szám
zsolt:~$ teszt a1s2a
Nem számRemélem, erre gondoltál…
Szerk.: előtte azért egy vizsgálat nem árt, hogy az első paraméter létezik-e.
2006-10-14-11:17 #2053281Vagy esetleg:
Code:if [ ! `expr $1 + 0 2>/dev/null` ]Csak győzz válogatni 🙂 (Ja és itt is előbb ellenőrizni kell, hogy van-e $1)
2006-10-14-11:31 #2053282MyCroft wrote:Vagy esetleg:Code:if [ ! `expr $1 + 0 2>/dev/null` ]Jaj, ez olyan alávaló 🙁 Semmi elegancia, semmi szépség…
Persze az első gondolatom nekem is ez volt (legalábbis ezen alapuló 😉 ), de inkább kb. két perc alatt összehoztam meg „teszteltem” a verziómat.2006-10-14-13:07 #2053283Nagyon szépen köszönöm a segítséget mindenkinek, müködik.
2006-10-24-07:36 #2053284A következő lenne a kérdésem:
a feladat az, hogy eltüntessük az első számoszlopot az ls -l kimenetéből. Az első működik, a második nem. Van ötletetek, miért?
ls -l|sed s/[0-9]{1,2}//
ls -l|sed s/[0-9]+//
Előre is köszi.2006-10-24-08:34 #2053285retaliator44 wrote:A következő lenne a kérdésem:
a feladat az, hogy eltüntessük az első számoszlopot az ls -l kimenetéből. Az első működik, a második nem. Van ötletetek, miért?
ls -l|sed s/[0-9]{1,2}//
ls -l|sed s/[0-9]+//
Előre is köszi.Ebben a formájában az első neked ment? Mert a { } jeleknél kell a
ls -l | sed „s/[0-9]/{1,2}//”A másodiknál ugyanigy a + elé is kell a , mivel be kell kapcsolni a + jelentésmódosító hatását, valamint be kell tenni ” ” közé:
ls -l | sed „s/[0-9]+//”2006-10-24-09:04 #2053286retaliator44 wrote:A következő lenne a kérdésem:
a feladat az, hogy eltüntessük az első számoszlopot az ls -l kimenetéből. Az első működik, a második nem. Van ötletetek, miért?
ls -l|sed s/[0-9]{1,2}//
ls -l|sed s/[0-9]+//
Előre is köszi.Szia!
Nem túl legáns, de működik. (nálam bizos)
ls -l | cut -d ” ” -f 1,4,5,6,7,82006-10-24-11:53 #2053287MyCroft wrote:Ebben a formájában az első neked ment? Mert a { } jeleknél kell a
ls -l | sed „s/[0-9]/{1,2}//”A másodiknál ugyanigy a + elé is kell a , mivel be kell kapcsolni a + jelentésmódosító hatását, valamint be kell tenni ” ” közé:
ls -l | sed „s/[0-9]+//”Persze, tényleg, idézőjelben is volt, de hogy a + elé is kell „”, ez meglep. Főleg azért, mert az egrepben szerintem nem kell. Legalábbis nekem ment. Vagy ez minden programban más? Apropó… a [] elé miért nem kell?
Szerk.: még egy kérdés: ha valaminek a kimenete egy ‘ jelet tartalmazó kifejezés, mondjuk
ls -l |sed ‘s/.{10} *([0-9]+).* [0-9]+ (.*) .*/1 2/’
akkor azt egy scriptben hogy tudom mondjuk echoval egy fileba küldeni? Mert csak úgy simán úgy látom, nem megy. Még akkor sem, ha az egészet ‘-ba rakom. A benti ‘-t meg nem tudom levédeni -sel, mert ugye kimenet és asse tudom mi lesz a várható értéke.2006-10-24-14:24 #2053288retaliator44 wrote:MyCroft wrote:Ebben a formájában az első neked ment? Mert a { } jeleknél kell a
ls -l | sed „s/[0-9]/{1,2}//”A másodiknál ugyanigy a + elé is kell a , mivel be kell kapcsolni a + jelentésmódosító hatását, valamint be kell tenni ” ” közé:
ls -l | sed „s/[0-9]+//”Persze, tényleg, idézőjelben is volt, de hogy a + elé is kell „”, ez meglep. Főleg azért, mert az egrepben szerintem nem kell. Legalábbis nekem ment. Vagy ez minden programban más? Apropó… a [] elé miért nem kell?
Szerk.: még egy kérdés: ha valaminek a kimenete egy ‘ jelet tartalmazó kifejezés, mondjuk
ls -l |sed ‘s/.{10} *([0-9]+).* [0-9]+ (.*) .*/1 2/’
akkor azt egy scriptben hogy tudom mondjuk echoval egy fileba küldeni? -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz