Bash script if/else pomoc

Sekcia: Programovanie 13.11.2012 | 12:21
Avatar Ivan Centos 6.x  Používateľ
Dobry den,

Prosim o pomoc pri pisani bash scriptu. Netusim ako to napisat, aby tam bola aj podmienka if/else. Potrebujem nasledovne..:

Ak je OS debian, tak zbehne:
wget ftp.de.debian.org/debian/pool/main/l/lshw/lshw_02.14-1_i386.deb
dpkg -i lshw_02.14-1_i386.deb

Ak je OS Centos/Rhel, tak zbehne:
wget http://packages.sw.be/lshw/lshw-2.14-1.el4.rf.i386.rpm
rpm -ivh lshw-2.14-1.el4.rf.i386.rpm

a nakoniec zbehne este "rpm -qa > rpm_output.txt"

Dakujem velmi pekne..
    • Re: Bash script if/else pomoc 13.11.2012 | 14:41
      WlaSaTy   Návštevník
      A čo Ti píše na nich príkaz lsb_release ?
      • Re: Bash script if/else pomoc 13.11.2012 | 15:02
        Avatar Ivan Centos 6.x  Používateľ
        pouzivam lsb_release -a. Neviem, ako podmienit spustanie prikazov v zavisloti na output toho prikazu.. ak je OS Debian tak x, ak je OS RHel, tak y, atd...
        • Re: Bash script if/else pomoc 13.11.2012 | 15:07
          WlaSaTy   Návštevník
          Napríklad pomocou grep a coreutils ktoré tam máš štandardne nainštalované.

          Keďže nepíšeš čo Ti to píše, tak to asi zvládneš aj sám. Ostatní si kôli tomu inštalovať dva rôzne OS nebudú.
          • Re: Bash script if/else pomoc 13.11.2012 | 15:30
            Avatar Ivan Centos 6.x  Používateľ
            Tu je ten script.. viem, ze to nie je ziadna slava, ale lepsie to neviem...

            #!/bin/bash
            lsb_release -a | grep Distributor

            if [ "Distributor" = "Centos" ]; then
            wget http://packages.sw.be/lshw/lshw-2.14-1.el4.rf.i386.rpm
            rpm -ivh lshw-2.14-1.el4.rf.i386.rpm

            if [ "Distributor" = "Debian" ]; then
            wget ftp.de.debian.org/debian/pool/main/l/lshw/lshw_02.14-1_i386.deb
            dpkg -i lshw_02.14-1_i386.deb

            else echo "different OS..."
            fi

            Error:
            sss.sh: line 12: syntax error near unexpected token `else'
            sss.sh: line 12: `else echo "different OS..."
            • Re: Bash script if/else pomoc 13.11.2012 | 15:58
              Avatar Fridolín Pokorný Fedora 21  Používateľ
              ...
              elif [ "Distributor" = "Debian" ]; then
              ...
              • Re: Bash script if/else pomoc 13.11.2012 | 16:06
                Avatar Ivan Centos 6.x  Používateľ
                Dakujem za pomoc..
                este jednu vec by som chcel vediet.. script pozera na nazov OS.. CentOS, Debian, atd... Pokial OS ma v nazve aj nieco navyse okrem toho, ako to napisem..? Snazim sa to robit na viacere verzie OS.
                Takto: Centos* alebo to treba inak..?

                Dakujem.
                • Re: Bash script if/else pomoc 13.11.2012 | 16:11
                  WlaSaTy   Návštevník
                  To už skôr použi operátor case.
                  • Re: Bash script if/else pomoc 13.11.2012 | 16:17
                    Avatar Ivan Centos 6.x  Používateľ
                    Vam sa to lahko hovory ked sukate prikazy z rukava.. ja budem zasa hodinu googlit kym na to pridem... aspon dufam, ze na to pridem..
                    • Re: Bash script if/else pomoc 13.11.2012 | 16:25
                      Avatar default Debian  Používateľ
                      Mám dlhší čas taký pocit, že wlasaty sa snaží, aby uživatelia, ktorým radí boli vynaliezavý, keď na niečo prídeš sám, že si nájdeš napríklad ten case, a zistíš ako pracuje, možno budeš vedieť ten kód navrhnúť aj sám, a to je lepšie ako keď ti to dakto napíše, nehovorím keby si sa ponáhľal, ale ak sa chceš učiť písať vlastné scripty, je dobrý takýto štýl učenia.
                      R.K
                      • Re: Bash script if/else pomoc 13.11.2012 | 16:33
                        Avatar Ivan Centos 6.x  Používateľ
                        Ja samozrejme tiez schalujem takyto styl z globalneho hladiska, len ked mna postavili pred linux bez toho aby som mal nejake fundamentalne zaklady tohoto OS, je to dost tazke. No nic.. idem sa trapit dalej.....
                        • Re: Bash script if/else pomoc 13.11.2012 | 16:43
                          WlaSaTy   Návštevník
                          Ono, problém je skôr v tom, že ten chalan je platený za vyriešenie toho na čo sa tu zdarma pýta. Je aj šikovný. Ale, aby sa opzrel do manuálu, tak to nie. A chce do tých systémov pchať veci trochu blbým spôsobom.
                    • Re: Bash script if/else pomoc 13.11.2012 | 16:32
                      WlaSaTy   Návštevník
                      Ja príkazy nešukám.

                      A nemám problém pozrieť si manuálovú stránku i keď mňa za vyriešeine tvojho problému neplatia.
                      man bash
                      /case

                      ...
                      DISTRIBUTOR=`lsb_release -a | grep Distributor | cut -d\= -f2-`
                      case ${DISTRIBUTOR} in
                          ("Centos") : wget http://packages.sw.be/lshw/lshw-2.14-1.el4.rf.i386.rpm
                                        rpm -ivh lshw-2.14-1.el4.rf.i386.rpm
                                         ;;
                          ("Debian") : wget ftp.de.debian.org/debian/pool/main/l/lshw/lshw_02.14-1_i386.deb
                                      dpkg -i lshw_02.14-1_i386.deb
                                       ;;
                          (*) : echo unknown distribution, aborting;
                                     break;
                                     ;;
                      esac
                      
                      Môže si príjsť pre Tvoju výplatu? Pravdepodobne to bude nutné, keďže priamou inštaláciou *rpm alebo *deb si rozhodíš balíčkovací systém a odpáliš možnosť upgrade.

                      PS: to tam máš Redhat alebo Centos?
                      • Re: Bash script if/else pomoc 13.11.2012 | 16:42
                        Avatar Ivan Centos 6.x  Používateľ
                        "Ja príkazy nešukám." Mal som na mysli ine slovo... ale moja predstavivost asi nie je az taka siroka...
                        A nemám problém pozrieť si manuálovú stránku i keď mňa za vyriešeine tvojho problému neplatia. Ja som tiez pozeral stranky, rozne tutorialy.. je to pre mna strasne abstraktne. Tento prikaz (script) by som ja urcite nenasiel v manualy...
                        "keďže priamou inštaláciou *rpm alebo *deb si rozhodíš balíčkovací systém a odpáliš možnosť upgrade." Netusim o com rozpravas...

                        Je to so mnou zufale... ale som rad, ze ste mi pomohli. Tvoj prikaz je uplne ina dimenzia nez to co som ja vysmolil.
                        Dakujem.

                        • Re: Bash script if/else pomoc 13.11.2012 | 16:48
                          WlaSaTy   Návštevník
                          Mal som na mysli ine slovo
                          Tak píš tak aby Ťa bolo rozumieť.

                          Tento prikaz (script) by som ja urcite nenasiel v manualy
                          To je pravda, popis syntaxe je v manuálovej stránke. Predpokladám, že si nepozeral čo robí príkaz man bash a ako sa v ňom vyhľadáva.

                          Skús sa už pozrieť do manuálov. Tie sú napísané na to, aby člooveku pomohli a nie aby sa použili na podloženie stola ktorý sa kýva. Hľadanie v google vyhodí len bežné riešenie, ale Ty máš špecifickú požiadavu. Takže bez príručky budeš odkázany na dobročinnosť ostatných. A to je pre samostatne mracujúceho človeka na pozícii správcu jasné mínus. Dosť veľké.
                        • Re: Bash script if/else pomoc 13.11.2012 | 16:55
                          Avatar default Debian  Používateľ
                          Len ten script čo si vytvoril ty, teda aspoň návrh, tomu aspoň rozumieš, zatiaľ, čo teraz máš síce hotový script, no nemusíš mu rozumieť, a to bude nutné ak budeš chcieť niečo ešte zmeniť, aby si s každou zmenou nechodil za wlasatym, minimálne, teraz by si sa na tú syntax mohol pozrieť a pochopiť jej.
                          R.K
                          • Re: Bash script if/else pomoc 13.11.2012 | 17:00
                            WlaSaTy   Návštevník
                            Ten skript bol napísaný z pamäti a tým pádom ho bude musieť upraviť. Ako tam dorobí tú hviezdičku, tak to má v popísané manuáli.
                            • Re: Bash script if/else pomoc 13.11.2012 | 17:29
                              Avatar default Debian  Používateľ
                              aha, predsa si nesklamal :)
                              R.K
                              • Re: Bash script if/else pomoc 13.11.2012 | 17:46
                                WlaSaTy   Návštevník
                                Čakal si že budem robiť chalanovi zdarma platenú podporu? On za to dostáva plat, ja nie.

                                Ak chce, nech si to opraví. Alebo nech si zaplatí niekoho čo si nainštaluje podobné systémy a nech mu dá nejaké vreckové za dodanie nástroja. Neboj, dosť sa ich nájde ak bude rozumná cena a akceptovateľné termíny.
                                • Re: Bash script if/else pomoc 13.11.2012 | 18:06
                                  Avatar default Debian  Používateľ
                                  Aha, tak som to zle pojal, ja že to je tvoja taktika, poradiť len čiastočne, posunúť dakoho ďalej, ale tak aby sa snažil vynájsť aj sám.
                                  R.K
                                  • Re: Bash script if/else pomoc 13.11.2012 | 18:45
                                    WlaSaTy   Návštevník
                                    Takmer. Ak to chce, tak sa to naučí.

                                    Iné by to bolo v práci kde si môžem s kolekami vymeniť navzájom nejaké úlohy.