skrypt w BASHu, grep

0

Mój temat dotyczy basha na linuxie.
nie ograniam zbytnio basha i mam pytanie o prosty program
ma to byc skrypt w bashu przyjumący jako argomuent liczbę i sprawdzający, czy wprowadzone ciągi znaków na pewno są liczbami tzn. powinien akceptowac 23432 a 432r3 powinien odrzucic, czytałem że można to zrobić za pomocą GREP, czytałem o tym grepie ale nie wiem jak to wykorzystać.
Mógby ktos pomóc ?
Wiem tylko że do pierwszego argumentu odwołujemy się $1, nie wiem co dalej.

0

Przykład użycia (może niezbyt wydajny i pewnie da się lepszy, ale patrz):

read b
 
echo $b | grep [^0-9] > /dev/null
if [ $? -eq 0 ]
then
        echo "WYSTEPUJA INNE ZNAKI NIZ LITERY"
fi
0

co oznacza "$?" oraz czemu /dev/null ? grep strumieniuje na /dev/null ale co i po co ?

0

a) $? to jest kod błędu. W przypadku grepa 0 oznacza, że znaleziono dany ciąg (w tym przypadku "nie-cyfrę"), 1 informuje o jego nieznalezieniu, a 2, że wystąpił błąd (można te info znaleźć w necie lub w manie).
b) Po co zrobiłem strumień na /dev/null? Bo gdy tego nie zrobię, to grep po prostu wypisze linię, w której znalazł wystąpienie "nie-cyfry". Można jednak zamiast tego użyć opcji -q w grepie, dzięki której nic nie pójdzie do terminala. Wtedy ta linia będzie wyglądała tak:

echo $b | grep [^0-9] -q
0

Yhy rozumiem, dzięki że tak dokładnie wytumaczyłeś. Wytłumacz mi jeszcze czemu dałeś echo $b | grep, nie wystarczy samo "$b | grep..." ?
nie rozumiem czemu echo, po co coś wypisywać, ja chce tylko sprawdzić, oraz co oznacza "|" ?
thx

0

Sorry, że tak późno.

echo $b

Normalnie to wypisałoby wartość $b, ale...

|

Które przekierowuje wyjście 1. programu na wejście 2. programu. Prościej mówiąc, to, co zostało wypisane przez echo $b, zostaje przepisane na wejście dla komendy...

grep [^0-9] -q

Która już wiadomo co robi z tym wejściem.

0

dzięki , rozumiem

0

mam pytanie , czemu zamisat "|" nie powinnismy użyć ">" czyli strumieniujemu wyjscie echa na wejscie grepa ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1