Forum Linux.pl

Programowanie => Bash, skrypty powłoki => Wątek zaczęty przez: Heng w 2019-12-14, 16:03:13

Tytuł: petla while
Wiadomość wysłana przez: Heng w 2019-12-14, 16:03:13
Witam
Męcze sie z pętlą while moze mógł by ktoś coś doradzić
#!/bin/bash
x=1;
while [ $x -le 30 ] ; do
    echo "Napis pojawił się po raz: $x"
    x=$[x + 1]
done
daje wynik :

Napis pojawił się po raz: 1
Napis pojawił się po raz: 2
Napis pojawił się po raz: 3
Napis pojawił się po raz: 4
Napis pojawił się po raz: 5
Napis pojawił się po raz: 6
Napis pojawił się po raz: 7
Napis pojawił się po raz: 8
Napis pojawił się po raz: 9
Napis pojawił się po raz: 10

a ja bardzo chciałbym aby wynik był dwucyfrowy tz:

Napis pojawił się po raz: 01
Napis pojawił się po raz: 02
Napis pojawił się po raz: 03
.......
Napis pojawił się po raz: 30




 czy da sie to w jakis łatwy sposób rozwiazać ?
Pozdrawiam
Tytuł: Odp: petla while
Wiadomość wysłana przez: beaker w 2019-12-14, 17:32:40
Rozwiązać się da, tylko po co?
#!/bin/bash
x=1;
while [ $x -le 10 ] ; do
    #tutaj if sprawdzający czy x jest większe równe 10
    echo "Napis pojawił się po raz: $x"
    #tutaj else lub sprawdzenie czy x jest w zakresie 1-9
     echo "Napis pojawił się po raz: 0$x"
x=$[x + 1]
done
Chociaż dla takiego zakresu liczb 1-10 można by to jeszcze uprościć

#!/bin/bash
x=1;
while [ $x -le 9 ] ; do
     echo "Napis pojawił się po raz: 0$x"
x=$[x + 1]
done
x=$[x + 1]
echo "Napis pojawił się po raz: $x"
Tytuł: Odp: petla while
Wiadomość wysłana przez: Heng w 2019-12-14, 17:50:27
a  jak w takim rozwiązaniu wykonasz pętle np do 30 bo 10 podałem tylko jako przykład
i chyba poprawie posta :)
Tytuł: Odp: petla while
Wiadomość wysłana przez: beaker w 2019-12-14, 18:26:24
Dalej nie wiem po co.
Poza tym pierwszy przykład obejmował przypadek dowolnego zakresu liczb.
Tytuł: Odp: petla while
Wiadomość wysłana przez: Heng w 2019-12-14, 21:11:50
po dodaniu if'a  działa. myślałem o jakiejś ładniejszej funkcji ale aktualnie liczy się aby działało
Dzięki piękne.
ps. zaspokoję twoja ciekawość chodz po co pytać do czego ktoś coś potrzebuje jeśli potrzebuje to najwidoczniej jest to potrzebne ;)
ale do rzeczy ....
potrzebuje to do generowania nazw linków które ktoś sobie wymyślił z zerem z przodu ...99_01_15.pdf ot taka błachostka
ale bez twojej pomocy bym pewnie się męczył  pare godzin dziękuje jeszcze raz i pozdrawiam
Tytuł: Odp: petla while
Wiadomość wysłana przez: marcin'82 w 2019-12-14, 21:14:34
Jakby się jakoś udało skrócić printf to może tak?
#!/bin/bash

x=1
while [ $x -le 30 ] ; do
    printf "Napis pojawił się po raz: "
    printf %02d "$x"
    printf "\n"
    x=$[x + 1]
done

Inaczej - spróbuj podać kilka argumentów do printf, ale tak, żeby formatowanie liczby nie świrowało.

parana
Super!
Tytuł: Odp: petla while
Wiadomość wysłana przez: parana w 2019-12-14, 21:27:25
#!/bin/bash
x=1;
while [ $x -le 30 ] ; do
   printf "Napis pojawił się po raz: %02d\n" $x
    x=$[x + 1]
done


Tytuł: Odp: petla while
Wiadomość wysłana przez: beaker w 2019-12-14, 21:30:26
To nie kwestia ciekawości, ale dobrania metody do potrzeb.
Propozycja marcin'82 zdecydowanie lepsza.
A jak sobie będzie pobierał zakres iteracji z argumentu wywołania to będziesz mogł sobie generować dowolny zakres jednym skryptem.
Tytuł: Odp: petla while
Wiadomość wysłana przez: marcin'82 w 2019-12-14, 21:30:58
Nie. Kolega parana pozamiatał :D Polać mu!
Tytuł: Odp: petla while
Wiadomość wysłana przez: beaker w 2019-12-14, 21:33:40
Zdrówko.
Tytuł: Odp: petla while
Wiadomość wysłana przez: Heng w 2019-12-14, 21:57:14
wysyp eleganckich rozwiazań, szkoda że za pózno, przyda sie dla innych :) dziekuje i pozdrawiam
Tytuł: Odp: petla while
Wiadomość wysłana przez: parana w 2019-12-14, 22:14:49
A teraz:
                                   
#!/bin/bash
x=1;
while [ $x -le 30 ] ; do
   echo $x | awk '{printf "Napis pojawił się po raz: %02d\n",$1}'
 x=$[x + 1]
done
Tytuł: Odp: petla while
Wiadomość wysłana przez: exTerminator w 2019-12-17, 22:20:27
***** zdaniem forumowiczów i admina = spam *****
Tytuł: Odp: petla while
Wiadomość wysłana przez: 1709 w 2019-12-18, 06:34:44
Jak zadasz to samo pytanie ale w nowym temacie to dostaniesz odpowiedz ?
Tytuł: Odp: petla while
Wiadomość wysłana przez: exTerminator w 2019-12-18, 08:50:20
***** zdaniem forumowiczów i admina = spam *****
Tytuł: Odp: petla while
Wiadomość wysłana przez: beaker w 2019-12-18, 08:59:08
C,C#,C++ i Asm w zastosowaniach skryptowych :D you make my day :)
Tytuł: Odp: petla while
Wiadomość wysłana przez: Paweł Kraszewski w 2019-12-18, 15:00:42
Nauka jednego języka z tejże rodziny jest bezsensowna, pytania nie zadam bo po co? I tak nikt nie zrozumie że podstawą  (i to razem w komplecie) są C,C#,C++ i Asm. Nauka jednego mija się z celem.

Przestań w końcu trollować, bo się bana doigrasz. Języki skryptowe mają się doskonale i są intensywnie rozwijane, w tym wszelkie shellowe. To, że w swoim grajdołku nie widzisz ich zastosowania, nie znaczy, że 99.9999999% pozostałych użytkowników go nie widzi.

Dla mnie na przykład podstawą są Go (client-side) i Erlang (server-side) a cała otoczka to ash (shell z BusyBoksa, w większości zgodny z bash-em), a nie C,C#,C++ czy Asm. Prove me wrong.
Tytuł: Odp: petla while
Wiadomość wysłana przez: exTerminator w 2019-12-18, 19:47:24
***** zdaniem forumowiczów i admina = spam *****
Tytuł: Odp: petla while
Wiadomość wysłana przez: 1709 w 2019-12-18, 20:07:09
exPredator
1 problem = 1 temat
Tytuł: Odp: petla while
Wiadomość wysłana przez: beaker w 2019-12-18, 20:11:50
Paweł, skąd te nerwy i po co? Bana? Za co? Za prawdę? Przecież jak nikogo nie obraziłem ani nie uraziłem i wiesz co miałem na myśli?
Rynek pracy! Popatrz na oferty dla programistów a z pewnością sam zrozumiesz co miałem na myśli i przykro mi że nie podzielam Twojego zdania. Swojego nieprędko zmienię! Dzisiaj, jeśli chcesz być programistą i mieć naprawdę dobrą pracę to jest niestety tak jak wspomniałem: w palcu C/C#/C++ + Asm. Dlaczego? Ano dlatego że kilka lat pracowałem na W.U.M. i wiem jakich ludzi po szkołach tutaj potrzebują. Jeśli nie znajdą ich w stolicy to szukają spoza granicy. Rynek jest wąski dzisiaj: albo maszyneria i programowanie mikro kontrolerów (w przeróżnych urządzeniach od motoryzacji począwszy na AGD skończywszy) albo aplikacje i gierki. Innych ludzi już bardzo rzadko się potrzebuje bo każdy po TE jest dziś grafikiem, dźwiękowcem czy filmowcem, jest takich w ciul i jeszcze trochę. Dasz radę programować sterowniki do np. piecy czy klimatyzacji nie znając asemblerka i C?  A zrobisz MENU i sterowanie na LCD dotykowym?  Paweł, bez urazy ale sam C to tyle co uczyć się w garach myć gary!  To podstawa podstaw która zaczyna się w każdej drugiej klasie każdego technikum/Liceum profilowanego które idzie w kierunku elektroniki/informatyki.

Może zrozum najpierw o czym jest ten wątek to może przestaniesz wypisywać bzdury.
Tytuł: Odp: petla while
Wiadomość wysłana przez: exTerminator w 2019-12-18, 21:40:07
***** zdaniem forumowiczów i admina = spam *****