ohjelma if-then lauseessa

Mitään ideaa miten oheinen saadaan toimimaan vai toimiiko lainkaan

if [ `cat /sys/class/gpio/gpio18/value` ]; then

eli ohjelman palaute if-then lauseessa. Saako sitä mitenkään toimimaan?
13268
Äänestä

Muut lukivat myös

Vastaukset 13

Vanhimmat

Voit tarkastella, mitä ihmettä komento 'cat /sys/class/gpio/gpio18/value' ylipäätään palauttaa. Linux-jakelussani ei moisia tiedostoja ole.
Kannattaa opetella shell-ohjelmointia tai sopivia ohjelmointikieliä.

Äänestä
  • Se palauttaa joko 0 tai 1 riippuen siitä onko kytkintä painettu vai ei. Debian ja raspberry pi 3.

    T: Alkuperäinen kyselijä.

    Äänestä

SAA, ja huomaa tuo "value" nimen tulisi kuulua tiedostolle, ei kansiolle kuten se tässä kysymyksessäsi vaikuttaa olevan.

if /bin/cat /sys/class/gpio/gpio18/value
then
echo "Tiedosto löytyi ja tulostettiin"
else
echo "Tiedosto ei löydetty"
fi

Äänestä
  • Tuo palautta truen jos tiedosto on olemassa. Ihan sitä en hae vaan tiedoston sisällön mukaan true tai false. Ja kyllä tuo /sys/class/gpio/gpio18/value on ihan tiedosto. Raspberry pi 3:ssa.

    Äänestä

Jos haluat testata onko tiedosto olemassa, ennen kuin annat cat -tulostuskomennon sille, voit toteuttaa sen myös näinkin:

if test -e /sys/class/gpio/gpio18/value
then
/bin/cat /sys/class/gpio/gpio18/value
else
echo "Tiedostoa ei ole"
fi

Äänestä

Tein miellyttävän havainnon kun otin ketjusta PDF kopion. Yhdennäköisyys on jonkin verran korjaantunut, mutta on vielä kaukana siitä mitä se vanhassa S24 sivustossa oli.

Äänestä
  • Ja paskat, jo tuo edellisen viestin lisääminen sotki tulosteen piloille. Hetken kerkisin kuvitella että jotain tämänkin virheen korjaamiseksi on tehty.

    Äänestä

2> on keino siirtää virheiden tulostus näkymättömiin.
$? taas kertoo miten edellinen komento onnistui. 0 jos se onnistui.

eli tälleen se vois toimia:
https://pastebin.com/3bSLsCpv

toinen keino sit tietty tarkistaa tiedoston olemassaolo ja jos se on, sitten lukea se.

Äänestä
  • Aivan hyvä variaatio tehtävästä.

    Äänestä

No tässä vielä variaatio siitä tapauksesta että pitää lukea tiedoston sisällöstä tuo TRUE arvo. Tämä esimerkki lukee tiedoston viimeisen rivin, vaikka niitä olisi kuinka paljon, muita ei huomioida. Lisäksi arvo TRUE luetaan vaikka kuinka pitkän rivin sisällöstä, kunhan se vain löytyy riviltä, ja ellei löydy, tulostetaan että: "Viimeinen rivi sisälsi jotain muuta!"

Lisäksi vielä heti alussa testataan että tämä (value) tiedosto on olemassa, mikäli ei ole, siitä ilmoitetaan: "Tiedostoa (value) ei löytynyt!".

Koska Linux Bash Shell ei ole sisennyksistä tarkka, kuten Python on, en viitsinyt tallentaa tuota Pastebin.com sivulle. Jos moderaattori poistaa niin tehdään se sitten mikäli tarvitaan.

if test -e /sys/class/gpio/gpio18/value;
then
s=`sed -n -e '$p' /sys/class/gpio/gpio18/value`
if [[ $s == *"TRUE"* ]]; then
echo "Viimeinen rivi sisälsi TRUE arvon!"
else
echo "Viimeinen rivi sisälsi jotain muuta!"
fi
else
echo "Tiedostoa (value) ei löytynyt!"
fi

Äänestä

Nosto, meinaa painua alle.

Äänestä

Aloittaja tässä terve. Alla oleva rivi toimi kuten halusin

if [ `cat /sys/class/gpio/gpio18/value` = 1 ]; then

Ja sitten puppulausegeneraattorin tuotosta pitääkseni tekoälyttömyysmoden tyytyväisenä:

Vaihtelevalla menestyksellä myös informaatioteknologia noudattaa epäilemättä ideatasolla reaktiota tämänhetkisen tilanteen suhteen. Jos vertailemme lyhyesti asiaankuuluvia ilmiöitä, huomaamme, että vallankumouksellinen kolmannen sukupolven matkapuhelimien ja varsinkin e-business -sektorille suunnattujen laitteiden kirjo antaa mahdollisuuden parantaa yleispätevien toimintaohjeiden tavanomaisia käyttökohteita. Yksilötasolla luulisi olevan selvää, että asynkroninen asiakaskokemus näyttää todeksi runsain määrin esiintyvää suurpiirteisyyttä sekä rauhattomuutta.

Tämän ollessa täyttä totta nykyään, kuka omaa vastuun tehdä oikeat johtopäätökset?

Lienee sanomattakin selvää, että kätevä langaton teknologia yhdistettynä esimerkiksi kiinteään tilaajapalveluun todistaa oikeaksi erilaisissa laitoksissa tapahtuvaa valmistusta. Keskeiset ideologiset periaatteet osoittavat, että useiden maanlaajuisia palveluita tarjoavien alan suuryritysten lanseeraama mobiili-internet -teknologia yksinkertaistaa hyvinvoivan yhteiskunnan rinnalle muodostuneita epäkohtia. Tilastot osoittavat, että asynkroninen asiakaskokemus asettaa tahomme tukalaan tilanteeseen ajateltaessa vastuuntuntoisten yhteistyökumppaneiden aatteellisia intressejä. Tapahtumat viime aikoina osoittavat, että verkottuva länsimaailma noudattaa epäilemättä ideatasolla organisaatiossa toimivien vastuunalaista asennetta.

Äänestä
  • Tämä oli HYVÄ ja opettavainen kysymys.

    Äänestä

Kommentoi aloitusta


Anonyymi kirjoitti:

Mitään ideaa miten oheinen saadaan toimimaan vai toimiiko lainkaan

if [ `cat /sys/class/gpio/gpio18/value` ]; then

eli ohjelman palaute if-then lauseessa. Saako sitä mitenkään toimimaan?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu