Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: ajaaskel - 30.07.12 - klo:16.49

Otsikko: Komentojen ehdollistaminen
Kirjoitti: ajaaskel - 30.07.12 - klo:16.49
Lainaus
Vähän menee offtopic mutta mitä eroa on kun päätteesä laittaa käskyjä putkeen puolipisteellä ja &&?

Puolipisteellä tehdään seuraava komento aina,  && jälkeen taasen tehdään vain jos se edellinen komento meni virheittä.

komento1 ;  komento2 ;  komento3       <--- tehdään peräkkäin oli edellisen komennon tulos mikä hyvänsä

komento1  &&  komento2  &&  komento3      <-- seuraava tehdään vain jos edellinen ei ilmoittanut virhettä

Tuosta on joitakin käteviä muunnoksia:

Koodia: [Valitse]
[ -d  "/home/liisa" ]  &&   echo "Hakemisto on olemassa"
Testataan onko hakemisto olemassa ja tehdään oikeanpuoleinen komento jos löytyi.

Asia voidaan myös kääntää.    Käyttämällä  ||   "tuplaputkea" saadaan vastakkainen toiminta:  Jatketaan letkaa eteenpäin vain jos edellinen epäonnistuu.   Jos ajatellaan tuota edellistä esimerkkiä niin voitaisiin sanoa vaikkapa:

Koodia: [Valitse]
[ -d  "/home/liisa" ]  ||  sudo mkdir "/home/liisa"
eli testataan onko tuo hakemisto olemassa  --> epäonnistui eli jatketaan seuraavaan komentoon ja luodaan se hakemisto.   


Otsikko: Komentojen ehdollistaminen
Kirjoitti: welmar - 30.07.12 - klo:17.02
OK! Toi oli hyvä tietää, sillä tapanani on ollut ajaa päivitykset
Koodia: [Valitse]
sudo apt-get update; sudo apt-get upgrade; sudo apt-get dist-upgrade; sudo reboot -r ja siinä on joskus ollut vähän ongelmia. Eli taidan muuttaa puolipisteen &&
Otsikko: Komentojen ehdollistaminen
Kirjoitti: ajaaskel - 30.07.12 - klo:17.13
Joo, nämä ovat hauskoja juttuja kun vain muistaa komentoja peräkkäin laittaessa:

<K1>  && <K2> && <K3> && <K4>.......       päästään läpi kun edellisen tulos on "onnistui"

<K1>  ||  <K2>  ||  <K3>  ||  <K4>.......         päästään läpi kun edellisen tulos on "epäonnistui"


Noiden välimerkkien  &&  sekä  || kohdalla aina tarkastetaan automaattisesti miten kävi.
Otsikko: Vs: Komentojen ehdollistaminen
Kirjoitti: jekku - 05.08.12 - klo:09.07
Joo, nämä ovat hauskoja juttuja kun vain muistaa komentoja peräkkäin laittaessa:

<K1>  && <K2> && <K3> && <K4>.......       päästään läpi kun edellisen tulos on "onnistui"

<K1>  ||  <K2>  ||  <K3>  ||  <K4>.......         päästään läpi kun edellisen tulos on "epäonnistui"


Noiden välimerkkien  &&  sekä  || kohdalla aina tarkastetaan automaattisesti miten kävi.

Tarvitseeko muuten nuo ohjausmerkit tai antavatko jotain erityistä etua?
Otsikko: Vs: Komentojen ehdollistaminen
Kirjoitti: Tomin - 05.08.12 - klo:11.17
Joo, nämä ovat hauskoja juttuja kun vain muistaa komentoja peräkkäin laittaessa:

<K1>  && <K2> && <K3> && <K4>.......       päästään läpi kun edellisen tulos on "onnistui"

<K1>  ||  <K2>  ||  <K3>  ||  <K4>.......         päästään läpi kun edellisen tulos on "epäonnistui"


Noiden välimerkkien  &&  sekä  || kohdalla aina tarkastetaan automaattisesti miten kävi.

Tarvitseeko muuten nuo ohjausmerkit tai antavatko jotain erityistä etua?

Tarkoitatko < ja > ? Eivät oikeastaan kuulu tuohon vaan merkkaavat komentoa eli esim. <K1> korvataan komennolla. && tarkoittaa and:ia ja || tarkoittaa or:ia, joten ihan sillä periaatteella tuo systeemi toimii. Puolipiste ; tarkoittaa rivinvaihtoa.
Otsikko: Vs: Komentojen ehdollistaminen
Kirjoitti: ajaaskel - 05.08.12 - klo:22.11
Olin vähän laiska kirjoittamaan eli kun tarkoitin "komento1" niin lyhentelin sen "<K1>" jne.  eli juuri kuten Tomin sanoi, itse noita väkäsiä ei kirjoiteta sinne ollenkaan.