0

この単純な bash スクリプトがあります。引数に渡された各ファイルに対して ns シミュレーターを実行します。最後の引数は、検索するテキスト文字列です。

#!/bin/bash

nsloc="/home/ashish/ns-allinone-2.35/ns-2.35/ns"
temp="temp12345ashish.temp"

j=1

for file in "$@"
do
        if [ $j -lt $# ]
        then
                let j=$j+1

                `$nsloc $file > $temp 2>&1`

                if grep -l ${BASH_ARGV[0]} $temp
                then
                        echo "$file Successful"

                fi

        fi
done

私は期待しました:

   file1.tcl Successful

私は得ています:

   temp12345ashish.temp
   file1.tcl Successful

ターミナルで自分でシミュレータ コマンドを実行すると、出力先のファイル名が取得されません。

この出力の最初の行が印刷されている場所から取得していません。説明してください。

前もって感謝します。

4

2 に答える 2

3

を参照し、特にオプションman grepの説明を参照してください。-l

スクリプト (上記) では、 を使用して-lいるため、grep は (指示に従って) 一致が発生したファイル名を示しています。

ファイル名を見たくない場合は、 を使用しない-lか、一緒に使用-qしてください。例えば:

grep -ql ${BASH_ARGV[0]} $temp
于 2013-04-22T21:15:19.917 に答える
0

grepを黙らせるだけです:

 if grep -l ${BASH_ARGV[0]} $temp &> /dev/null 
于 2013-04-22T20:08:44.287 に答える