我正在使用下面的代码来复制文件。我得到错误if语句..请帮助... $ 1是一个数字,将在$ j中搜索这是一个文件...我想复制文件,如果有一些记录,否则将不会做任何事情。 ..用于if和grep的Unix Shell脚本语法和-gt
for j in $2/$file_z
do
if ``grep $1 $j | wc -l` -gt 0`
then
echo $j
cp $j $3
fi
done
我正在使用下面的代码来复制文件。我得到错误if语句..请帮助... $ 1是一个数字,将在$ j中搜索这是一个文件...我想复制文件,如果有一些记录,否则将不会做任何事情。 ..用于if和grep的Unix Shell脚本语法和-gt
for j in $2/$file_z
do
if ``grep $1 $j | wc -l` -gt 0`
then
echo $j
cp $j $3
fi
done
有两个错误在你的脚本:
backticks
是不允许的。$2/$file_z
代替$(<$2/$file_z)
修正:
for j in `<$2/$file_z`
do
if grep -q "$1" "$j" > /dev/null
# if grep "$1" "$j" > /dev/null # if your grep does not support -q
then
echo $j
cp $j $3
fi
done
更优化:
for j in `<$2/$file_z`
do
grep -l "$1" "$j" /dev/null && cp $j $3
done
grep
本身可以打印文件的名称。
你也可以乱写for
相同:
cp -v $(grep -l "$1" `<$2/$file_z`) $3
的命令使与您的整个脚本。
请一定要包括在以后的实际的错误信息;伊戈尔这次找到了一份很好的工作:)但实际的错误有时不太清楚。 – sarnold