2013-04-22 122 views
0

我有這個簡單的bash腳本: 我運行ns模擬器在每個文件傳遞參數最後一個參數是一些文本字符串搜索。Bash腳本:不需要的輸出

#!/bin/bash 

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

j=1 

for file in "[email protected]" 
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 

當我在終端上運行模擬器命令自己,我沒有得到其輸出指向的文件名。

我沒有從第一行輸出得到打印。 請解釋一下。

在此先感謝。

回答

3

man grep,看看具體的-l選項的解釋。

在您的腳本(上面)中,您使用的是-l,所以grep會告訴您(按照指示)匹配發生的文件名。

如果您不想看到文件名,請不要使用-l或使用-q。例如:

grep -ql ${BASH_ARGV[0]} $temp 
0

只是沉默的grep:

if grep -l ${BASH_ARGV[0]} $temp &> /dev/null