2017-10-17 16 views
0

Ich habe ein Problem mit meinem Skript. Ich muss Skript mit Parameter ausführen. Zum Beispiel:Laufendes Bash-Skript mit Parameter

./birhday 10 2000 

und ich sollte diese:

"at 10 2000 was born Mark,Jordan" 

Die Namen haben geladen werden aus der Liste, zum Beispiel:

listofnames:

2000 
01 Jane,Marry 
02 Jason,Ted 
. 
. 
. 
12 Stephen,Victor 

Und Ich habe keine Ahnung, wie das geht. Kann mir jemand helfen?

+0

Präfix Code/Daten mit vier weißen Räumen versuchen. Bitte werfen Sie einen Blick auf [editing-help] (http://stackoverflow.com/editing-help). – Cyrus

Antwort

0

Eigentlich würde ich das Format der Daten an das ändern:

2000-01 Jane,Marry 
2000-02 Jason,Ted 
. 
. 
. 
2000-12 Stephen,Victor 

Es wäre wirklich das Skript vereinfachen. In diesem Fall wird es, da dies so einfach sein:

#!/bin/bash 

if [ $# -lt 2 ] 
then 
    echo "Usage format: $(basename $0) MM YYYY" 
    exit 1 
else 
    NAMES=$(grep $2-$1 ListOfNames | awk '{print $2}') 
    echo "at $1 $2 was born $NAMES" 
fi 
0

Sie diese ein

seen=$(sed -n '/'"$2"'/{:A;n;/'"$1"'/!bA;s/^[^ ]* //;p;q}' ListOfNames) 
[ -n "$seen" ] && echo "at $1 $2 was born $seen"