Bitte um Hilfe beim schreiben eines GREP-Scripts

P

Pcpaul

Hallo,

Ich habe als Hausaufgabe ein Script entwickelt, dies funkitoniert auch, nun soll ich als Zusatzaufgabe das machen:

Idealerweise erstellen Sie noch eine Version die das Ergebnis der Suche Wahlweise im StdOut oder (XOR) in eine Datei schreibt.

Leider habe ich kein blassen Schimma wie das gehen soll, eine kleine Hilfe were super!

Hier selbst zu dem eigentlichen Script, den ich als Hausaufgabe aufhatte zu entwickeln:




#!/bin/bash
# Sucht alle "InputFiles", die dem SeachText entsprechen
# Das Ergebnis wird in der Outpufile gespeichert und abgelegt

# The name of this script
SCRIPT_NAME=suchen.sh

###################################################################
#
# Check for Invalid Command Line Arguments
# $1 = SearchText
# $2 = InputFile
# $3 = OutputFile
#
###################################################################
if [ $# -lt 3 ]
then
echo "Usage: $SCRIPT_NAME <SearchText> <InputFile.txt> <OutputFile.txt>" #Parameter, die zu setzen sind
echo "Example: $SCRIPT_NAME ERROR message.log result.txt" # Beispiel wie es aussehen könnte
exit
fi

grep $1 $2 > $3 # speichert die Informationen in das Outputfile
echo $3
 
Hallo, willkommen im unixboard

zum einen, wenn du skripte, sourcecode, oder logs postets verwende bitte
Code:
 tags.

Die übliche Methode, um den output entweder in eine datei, oder in den stdout zu schieben ist den output immer in den stdout auszugeben, du kannst dein skript ja sowieso mit "suchen.sh <SearchText> <InputFile.txt> > AUSGABEDATEI" ausführen.

Für deine Aufgae könntest du den Ausgabedatei Parameter optional machen und bei "if [ $# -lt 2]" die Ausgabe in den stdout ausgeben und sonst noch $3 ausgeben. Dabei solltest du aber von "-lt" auf "-eq" umsteigen, sonst führst du uu etwas aus, dass du nicht haben willst.

Dein Programmname steht übrigens auch in "$0", wenn du den richtigen Namen des Programms haben willst, obwohl es umbenannt wurde kannst du "SCRIPT_NAME=$(basename $0 )" verwenden.
 
Wie wärs mit case oder getopts in der du das per option an oder ausschaltes.

Code:
function_e()
{
#code goes here
}

#code goes here
while getopts e opts 
 do 
    case $opt in 
      e) function_e
     esac
  done
 shift $(($OPTIND -1))

code goes here
  
exit 0

ich bin aber nicht hier um deine hausaufgaben zu machen :P
 

Ähnliche Themen

HLDS init script?

Zurück
Oben