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,因此 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 回答