4.11  Shellin optiot ja set

Kohdassa 4.4.7 esiteltiin set-komennon käyttö positioparametrien muuttamiseen. Sillä voidaan myös tulostaa kaikki shellin muuttujat (ilman mitään optioita ja argumentteja), sekä muuttaa shellin optioita, jotka on lueteltu alla.

Kaikissa seuraavissa voi alkuviivan korvata plus-merkillä, jolloin merkitys kääntyy (kytkee option pois päältä).

-a Muuttujasijoituksista seuraa automaattinen export.
-C Estää tulostuksen uudelleensuuntauksen olemassaolevan tiedoston päälle (noclobber); vrt. 4.5.1.
-e Virhe yksinkertaisesta komennosta (jota ei oteta kiinni ohjausrakenteella) aiheuttaa shellistä poistumisen (exitin).
-f Estää tiedostonimien laajennuksen.
-n Shell lukee komennot muttei suorita niitä (syntaksitarkistus).
-u Yritys käyttää muuttujaa jota ei ole aiheuttaa virheen. Ilman tätä (set +u) sellaisesta tulee tyhjä.
-v Shell tulostaa stdininsä stderriin sitä lukiessaan.
-x Komennot tulostetaan stderriin ennen suoritusta.

Kaikki nämä voi myös antaa shellin käynnistyksessä optioina.

Esimerkki: Lukkotiedoston käyttö edellyttää atomaarista tiedoston olemassaolon testausta ja luontia. Se voidaan tehdä -C-option avulla tähän tapaan:

LOCK=Lukko
reset="set +C"
case $- in *C*) reset="" ;; esac
set -C
until 2>/dev/null >$LOCK 
do sleep 10
printf "."
done 
$reset
echo "got it!"

4.12  Trap

trap [toiminta ehto ...]

määrää miten shell reagoi signaaleihin (vrt. kill). Jos toiminta on -, palautetaan oletusasetus, jos se on tyhjä merkkijono, ko. signaaliin ei reagoida. Muussa tapauksessa sen pitää olla shellin ymmärtämä komentorivi (kuin jos tehtäisiin eval "\$toiminta") ja se suoritetaan samassa ympäristössä kuin signaalia edeltänyt komento, mutta $?:n arvo palautetaan sen jälkeen ennalleen.

Ehto voi olla EXIT, 0 (sama kuin EXIT), signaalinimi (ilman SIG-etuliitettä) tai numero (lailliset nimet ja numerot kuten kill-komennolla).

Esim. tulostetaan ''heippa'' shellin päättyessä (normaalisti tai ei):
trap "echo heippa" EXIT

Ilman argumentteja trap tulostaa voimassa olevat asetuksensa sellaisessa muodossa että sen voi suorittaa eval-komennolla asetuksen palauttamiseksi:

oldtraps=$(trap)
...
eval "$oldtraps"

Seuraava: 5.1-5.25 Standardikomennot A-F
Edellinen: 4.9-4.10 Ohjausrakenteet ja aritmetiikka


File translated from TEX by TTH, version 1.98.
On 17 May 2001, 18:14.