我必须做一个练习:有一个文件包含这个文本
dirA dirB
dirX dirY
dirA dirD
每行有两个目录,如果第一个目录的任何文件包含在第二个目录中,则脚本必须检查每一行。这是脚本:
if [ $# -ne 2 ];then
echo "Error! Insufficient parameters"
exit 1
fi
if [ ! -f $1 ];then
echo "$1 is not a file"
exit 2
fi
if [ -f $2 ];then
echo "$2 already exists"
exit 3
fi
file=$(cat $1)
file_output=$(touch $2)
count=0
dir_a=''
dir_b=''
for i in $file ; do
if [ $count -eq 0 ];then
dir_a=$i
let count=$count+1
continue
fi
if [ $count -eq 1 ];then
dir_b=$i
let count=0
for f in $(ls $dir_a) ; do
if [ -f $dir_b/$f ];then
echo "found"
fi
done
fi
done
问题是它没有检查最后一对,在上面的例子的情况下,它不会检查这对夫妇“dirA dirD”。 对这种奇怪行为的任何想法?
答案 0 :(得分:1)
.....什么?
while read src dest
do
for file in "$src"/*
do
if [ -e "$dest"/"${file##*/}" ]
then
echo "Found: $src $dest"
break
fi
done
done