Mikä tässä alla olevassa aiheuttaa virheen:
#!/usr/bin/env bash
on () { echo "Tiedosto on olemassa." }
ei () { echo "Tiedostoa ei ole olemassa." }
[ -f testi.txt ] && on || ei
#!/usr/bin/env bash
on () { echo "Tiedosto on olemassa." }
ei () { echo "Tiedostoa ei ole olemassa." }
[ -f testi.txt ] && on || ei
Vastaukset 3
Vanhimmat
"#!/usr/bin/env bash"
Ei tuolla tavalla, vaan ensimmäiselle riville laitetaan polku bashiin. Yleensä se on /bin/bash, esim:
#!/bin/bash
[ -f $1 ] && echo "'$1' on olemassa." || echo "'$1' ei ole olemassa."
---
Tallennetaan tuo vaikka nimellä test.sh ja tehdään siitä ajettava komennolla chmod x ./test.sh
$ ./test.sh test.sh
'test.sh' on olemassa.
$ ./test.sh test.bash
'test.bash' ei ole olemassa.
Absoluuttinen komentotulkin polku voi osoittaa väärään paikkaan, mutta ympäristömuuttujan env käyttäminen osoittaa lähes 100 varmasti missä komentotulkki on.
Bach, python ja perl -skriptin siirrettävyys on maksimissaan kun käytetään ympäristömuuttujaa kertomaan tulkin sijainti.
HIENOA
Hyvä ajatus kutsua funktioita, ehdon toteutumista vastaavasti. Virhe on minimaalinen, (;) ja vain yksirivisenä tulee esille.
#!/usr/bin/env bash
on () { echo "Tiedosto on olemassa."; }
ei () { echo "Tiedostoa ei ole olemassa."; }
[ -f testi.txt ] && on || ei