← Back to team overview

sslug-teknik team mailing list archive

Re: shellscripts

 

On Sat, 26 May 2001, Anders wrote:

>   Jeg sidder lige og leger lidt med noget shell script værk, og vil i
>   den forbindelse have mit script til at grep'e i en fil og hvis den
>   finder søgeordet skal en ting ske og hvis den ikke gør skal en anden
>   ting ske, hvordan er det lige jeg laver den pågældende if-sætning så
>   jeg benytter output'et af en kommando?

Jeg plejer at gøre noget lig følgende:

--------------------
#!/bin/bash
SOEGEORD=$1
FIL=$2

#
# Undersøg om vi har fået parametre til scriptet.
#
if [ -z "${SOEGEORD}" -o -z "${FIL}" ]; then
  echo "Usage: `basename $0` <søgeord> <fil>"
  exit 1
fi

#
# Undersøg om filen findes.
#
if [ ! -f "${FIL}" ]; then
  echo "Filen ${FIL} kunne ikke findes."
  exit 2
fi

#
# Hiv resultatet af en kommando ind i en variabel.
# Smid stderror af p...... til.
#
SOEGERESULTAT=`grep "${SOEGEORD}" "${FIL}" 2>/dev/null`
if [ -n "${SOEGERESULTAT}" ]; then
  #
  # Vi har noget i variablen.
  #
  echo "${SOEGEORD} blev fundet i ${FIL}."
  echo "Gør noget her"
else
  #
  # Variablen var tom
  #
  echo "${SOEGEORD} blev ikke fundet i ${FIL}."
fi
--------------------

"-z" undersøger om det er en tom linje. Derfor SKAL der "" omkring den
variabel der spørges om, da scriptet/testfunktionen ellers vil komme og
sige at den forventede noget.

"-n" undersøger om der er noget i variablen. Du skal også i dette tilfælde
bruge "" omkring variablen da du risikerer at den er tom.


Med venlig hilsen
Bjørn Bille Højte
bjoern@xxxxxxxxxxxxx




References