2017-10-17 17 views
0

スクリプトに問題があります。私はパラメータでスクリプトを実行する必要があります。パラメータ付きのbashスクリプトを実行中

./birhday 10 2000 

と私はこれを取得する必要があります:

名は持っている
"at 10 2000 was born Mark,Jordan" 

例えば、リストからロードされる:

ListOfNames:

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

例えば私はそれを行う方法を手がかりがありません。誰か助けてくれますか?

+0

プレフィックスあなたのコード/データを、このいずれかを試すことができます。 [edit-help](http://stackoverflow.com/editing-help)を見てください。 – Cyrus

答えて

0

実際に私はこれにあなたのデータの形式を変更します

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

それは実際にスクリプトを簡素化します。このケースでは、このような単純なものになります。

#!/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

はあなたが4つの空白であまりに

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