Bash脚本:不需要的输出

时间:2013-04-22 19:56:45

标签: linux bash scripting

我有这个简单的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

当我在终端上运行模拟器命令时,我没有得到输出所针对的文件名。

我没有从第一行输出的打印位置开始。 请解释一下。

提前致谢。

2 个答案:

答案 0 :(得分:3)

请参阅man grep,并详细了解-l选项的说明。

在您的脚本(上图)中,您正在使用-l,因此grep会告诉您(按照指示)发生匹配的文件名。

如果您不想查看文件名,请不要使用-l,也不要使用-q。例如:

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

答案 1 :(得分:0)

沉默一下grep:

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