我写了一个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 Drag :: log / Test.log Drag1.log`
我收到以下错误:
grep: Drag::: No such file or directory
log/Test.log
文件也变空。
为什么?
答案 0 :(得分:4)
主要部分是因为$0
是脚本的名称而不是脚本的第一个参数。第一个参数是$1
,第四个参数是$4
,等等。
所以你的作业应该是:
searchText=$1
inputFile=$2
lines=$3
outputFile=$4