我正在使用下面的代碼來複制文件。我得到錯誤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