2016-08-23 153 views
0

我写了一个bash脚本来grep一个字符串,然后输出几行,然后输出到另一个文件。Bash脚本grep文件中的字符串并输出到另一个文件

这里是我的bash脚本

#!/bin/bash 

echo "$#" 

if [ "$#" -ne 4 ]; then 

     echo "Usage : ./redirectTrace.sh searchText inputFile number_of_Lines_succeeding_the_searchText outputFile" 

else 

     searchText=$0 
     inputFile=$1 
     lines=$2 
     outputFile=$3 

     echo "$0 , $2, $3, $4" 

     grep -i -A "$lines" "$searchText" $inputFile > $outputFile 
fi 

当我执行这个作为./redirectTrace.sh Drag:: log/Test.log 10 Drag1.log,我得到

grep: log/Test.log: invalid context length argument 

如果我不及格线的数量和固定值执行,我得到另一个错误。

脚本:

grep -i -A 10 "$searchText" $inputFile > $outputFile 

执行: ./redirectTrace.sh将::登录/ test.log中Drag1.log`

我获得以下错误:

grep: Drag::: No such file or directory 

而且log/Test.log文件变空。

为什么?

回答

4

主要部分是因为$0脚本的名称不是脚本的第一个参数。第一个参数是$1,第四个参数是$4

所以,你的任务应该是:

searchText=$1 
inputFile=$2 
lines=$3 
outputFile=$4 
相关问题