Пропустить навигацию.
Главная

Первая лабораторная работа (исходник на BASH) для UNIX систем.

##############################LABA1.sh##############################

if [ $# -lt 2 ]
then
echo "Wrong format"
exit 1
fi

Catalog1="$1"
shift
Catalog2="$1"
shift

if [ -d "$Catalog1/$Catalog2" ]
then
echo "Catalog not excisting"
exit 1
fi

if [ ! -d "$Catalog1" ] || [ ! -d "$Catalog2" ]
then
echo "Catalog not excisting"
exit 1
fi
if [ ! -r "$Catalog1" -o ! -x "$Catalog1" ] || [ ! -x "$Catalog2" ]
then
echo "Catalog not excisting"
exit 1
fi
list=1
list=`ls "$Catalog1"`
#echo "Spisok: "

if [ ! -d "$Catalog2/$Catalog1" ]
then
if [ ! -w "$Catalog2" ]
then
echo Catalog not excisting
exit 1
else
mkdir "$Catalog2/$Catalog1"
chmod a=wx "$Catalog2/$Catalog1"
fi
elif [ -d "$Catalog2/$Catalog1" ]
then
if [ ! -x "$Catalog2/$Catalog1" -o ! -w "$Catalog2/$Catalog1" ]
then
echo Catalog not excisting
exit 1
fi
fi

##echo "catalogs:" $Catalog1 " and " $Catalog2
while [ $# != 0 ]
do
for i in $list
do
j="$i"
i="$Catalog1/$i"
if [ -f "$i" ]
then
if [ ! -r "$i" ]
then
echo "Unable to copy files"
exit 1
fi
echo "File - $i"
if [ ! -f "$Catalog2/$Catalog1/$j" -a ! -d "$Catalog2/$Catalog1/$j" ]
then
if [ ${i##*.} == ${1##*.} ]
then
res=`cp "$i" "$Catalog2/$Catalog1"`
if [ ! -f "$Catalog2/$Catalog1/$j" ]
then
echo "Unable to copy files"
exit 2
fi
chmod a+r+w+x "$Catalog2/$Catalog1/$j"
fi
fi
else
echo "Folder - $i"
fi
done
echo ${1##*.}
shift
done

##############################TEST.sh##############################
##preparibg
if [ ! -d "FROM" ]
then
mkdir "FROM"
fi

if [ ! -d "TO" ]
then
mkdir "TO"
fi

if [ ! -f "FROM/picture.jpg" ]
then
echo "Privet!" > "FROM/picture.jpg"
fi

if [ ! -f "FROM/test.txt" ]
then
echo "This only test" > "FROM/test.txt"
fi

if [ ! -f "FROM/game.exe" ]
then
echo "Game. It's imitation game file." > "FROM/game.exe"
fi

if [ ! -d "T O" ]
then
mkdir "T O"
fi

if [ ! -d "FR OM" ]
then
mkdir "FR OM"
cp "FROM/game.exe" "FR OM"
cp "FROM/picture.jpg" "FR OM/picture.jpg"
cp "FROM/test.txt" "FR OM/test.txt"
fi

##Test1
Catalog1="12345"
res=`chmod a=rwx TO`
res=`bash Lab1 $Catalog1 TO txt`
if [ "$res" == "Catalog not excisting" -a "$?" == "1" ]
then
echo "Test1 OK"
else
echo $res $?
echo "Test1 NOT OK"
fi

##Test2A (Test Caalog1, Catalog2\Catalog1 is not exist)
Catalog1="FROM"
Catalog2="TO"
res=`chmod a=r $Catalog1`
res=`chmod a=rwx $Catalog2`
if [ -d "$Catalog2/$Catalog1" ]
then
res=`chmod a=rwx $Catalog2/$Catalog1`
res=`rm $Catalog2/$Catalog1 -r`
fi
res=`bash Lab1 $Catalog1 $Catalog2 txt`
if [ "$res" == "Catalog not excisting" -a "$?" == "1" ]
then
echo "Test2 OK"
else
echo "Test2 NOT OK"
fi
res=`chmod a=rx $Catalog1`

##Test2B (test Catalog2, Catalog2\Catalog1 is not exist)
Catalog1="FROM"
Catalog2="TO"
res=`chmod a=rx $Catalog1`
if [ -d "$Catalog2/$Catalog1" ]
then
res=`chmod a=rwx $Catalog2/$Catalog1`
res=`rm $Catalog2/$Catalog1 -r`
fi
res=`chmod a=rx $Catalog2`
res=`bash Lab1 $Catalog1 $Catalog2 txt`
if [ "$res" == "Catalog not excisting" -a "$?" == "1" ]
then
echo "Test2B OK"
else
echo $res
echo "Test2B NOT OK"
fi
res=`chmod a=rwx $Catalog2`

##Test2C (test Catalog1, Catalog2\Catalog1 is exist)
Catalog1="FROM"
Catalog2="TO"
res=`chmod a=x $Catalog1`
res=`chmod a=rwx $Catalog2`
if [ ! -d "$Catalog2/$Catalog1" ]
then
res=`mkdir $Catalog2/$Catalog1`
fi
res=`chmod a=rx $Catalog2`
res=`chmod a=wx $Catalog2/$Catalog1`
res=`bash Lab1 $Catalog1 $Catalog2 txt`
if [ "$res" == "Catalog not excisting" -a "$?" == "1" ]
then
echo "Test2C OK"
else
echo $res
echo "Test2C NOT OK"
fi
res=`chmod a=rwx $Catalog2/$Catalog1`

##Test2D (test Catalog2\Catalog1, Catalog2\Catalog1 is exist)
Catalog1="FROM"
Catalog2="TO"
res=`chmod a=rx $Catalog1`
res=`chmod a=rwx $Catalog2`
if [ ! -d "$Catalog2/$Catalog1" ]
then
res=`mkdir $Catalog2/$Catalog1`
fi
res=`chmod a=rx $Catalog2`
res=`chmod a=x $Catalog2/$Catalog1`
res=`bash Lab1 $Catalog1 $Catalog2 txt`
if [ "$res" == "Catalog not excisting" -a "$?" == "1" ]
then
echo "Test2D OK"
else
echo $res
echo "Test2D NOT OK"
fi
res=`chmod a=rwx $Catalog2/$Catalog1`

##Test3
Catalog1="FROM"
Catalog2="TO"
res=`chmod a=rx $Catalog1`
res=`chmod a=rwx $Catalog2`
if [ ! -d "$Catalog2/$Catalog1" ]
then
res=`mkdir $Catalog2/$Catalog1`
fi
res=`chmod a=rx $Catalog2`
res=`chmod a=wx $Catalog2/$Catalog1`
res=`bash Lab1 $Catalog1`
if [ "$res" == "Wrong format" -a "$?" == "1" ]
then
echo "Test3 OK"
else
echo $res
echo "Test3 NOT OK"
fi
res=`chmod a=rwx $Catalog2/$Catalog1`

##Test4
Catalog1="FROM"
Catalog2="TO"
res=`chmod a=rx $Catalog1`
res=`chmod a=rwx $Catalog2`
if [ ! -d "$Catalog2/$Catalog1" ]
then
res=`mkdir $Catalog2/$Catalog1`
fi
res=`chmod a=rx $Catalog2`
res=`chmod a=rwx $Catalog2/$Catalog1`
res=`bash Lab1 $Catalog1 $Catalog2 txt jpg`
if [ -f "$Catalog2/$Catalog1/picture.jpg" -a -r "$Catalog2/$Catalog1/picture.jpg" -a -w "$Catalog2/$Catalog1/picture.jpg" -a -x "$Catalog2/$Catalog1/picture.jpg" ]
then
if [ -f "$Catalog2/$Catalog1/test.txt" -a -r "$Catalog2/$Catalog1/test.txt" -a -w "$Catalog2/$Catalog1/test.txt" -a -x "$Catalog2/$Catalog1/test.txt" -a "$?" == "0" ]
then
echo "Test4 OK"
else
echo $res $?
echo "Test4 NOT OK"
fi
else
echo $res
echo "Test4 NOT OK"
fi

##Test5
Catalog1="FROM"
Catalog2="TO"
res=`chmod a=rx $Catalog1`
res=`chmod a=rwx $Catalog2`
res=`bash Lab1 $Catalog1 $Catalog2 txt jpg`
if [ -d "$Catalog2/$Catalog1" -a -f "$Catalog1/picture.jpg" -a -f "$Catalog1/test.txt" -a -f "$Catalog1/game.exe" -a "$?" == "0" ]
then
echo "Test5 OK"
else
echo $res $?
echo "Test5 NOT OK"
fi

##Test6
Catalog1="FROM"
Catalog2="TO"
res=`chmod a=rx "$Catalog1"`
res=`chmod a=rwx "$Catalog2"`
if [ -d "$Catalog2/$Catalog1" ]
then
res=`chmod a=rwx $Catalog2/$Catalog1`
res=`rm $Catalog2/$Catalog1 -r`
fi
res=`bash Lab1 "$Catalog1" "$Catalog2" txt jpg`
if [ -d "$Catalog2/$Catalog1" -a -x "$Catalog2/$Catalog1" -a -w "$Catalog2/$Catalog1" -a "$?" == "0" ]
then
echo "Test6 OK"
else
echo $res $?
echo "Test6 NOT OK"
fi

##Test7
Catalog1="FR OM"
Catalog2="T O"
res=`chmod a=rx "$Catalog1"`
res=`chmod a=rwx "$Catalog2"`
res=`bash Lab1 "$Catalog1" "$Catalog2" txt jpg`
if [ "$?" == "0" ]
then
echo "Test7 OK"
else
echo $res $?
echo "Test7 NOT OK"
fi
res=`chmod a=rwx "T O/FR OM"`
res=`chmod a=rwx "FR OM"`
res=`rm "FR OM" -r`
res=`chmod a=rwx "T O"`
res=`rm "T O" -r`

##Test8
Catalog1="FROM"
Catalog2="TO"
res=`chmod a=rwx "$Catalog1"`
res=`chmod a=rwx "$Catalog2"`
if [ ! -d "$Catalog1/$Catalog2" ]
then
res=`mkdir $Catalog1/$Catalog2`
fi
res=`bash Lab1 "$Catalog1" "$Catalog2" txt jpg`
if [ "$res" == "Catalog not excisting" -a "$?" == "1" ]
then
echo "Test8 OK"
else
echo $res $?
echo "Test8 NOT OK"
fi
res=`rm $Catalog1/$Catalog2 -r`

##Test9
Catalog1="FROM"
Catalog2="TO"
res=`chmod a=rx "$Catalog1"`
res=`chmod a=rwx "$Catalog2"`
if [ -d "$Catalog2/$Catalog1" ]
then
res=`chmod a=rwx $Catalog2/$Catalog1`
res=`rm $Catalog2/$Catalog1 -r`
fi
res=`bash Lab1 "$Catalog1" "$Catalog2" txt jpg`
if [ -f "$Catalog2/$Catalog1/test.txt" -a -f "$Catalog2/$Catalog1/picture.jpg" -a "$?" == "0" ]
then
test1=`cat "$Catalog1/test.txt"`
test2=`cat "$Catalog2/$Catalog1/test.txt"`
picture1=`cat "$Catalog1/picture.jpg"`
picture2=`cat "$Catalog2/$Catalog1/picture.jpg"`
if [ "$test1" == "$test2" -a "$picture1" == "$picture2" ]
then
echo "Test9 OK"
else
echo $test
echo $res $?
echo "Test9 NOT OK"
fi
else
echo $res $?
echo "Test9 NOT OK"
fi

##Test10
Catalog1="FROM"
Catalog2="TO"
res=`chmod a=rx $Catalog1`
res=`chmod a=rwx $Catalog2`
if [ -d "$Catalog2/$Catalog1" ]
then
res=`chmod a=rwx $Catalog2/$Catalog1`
res=`rm $Catalog2/$Catalog1 -r`
fi
res=`bash Lab1 $Catalog1 $Catalog2 txt`
if [ -d $Catalog2/$Catalog1 -a -w $Catalog2/$Catalog1 -a -x $Catalog2/$Catalog1 -a ! -r $Catalog2/$Catalog1 -a "$?" == "0" ]
then
echo "Test10 OK"
else
echo $?
echo "Test10 NOT OK"
fi
res=`chmod a=rwx $Catalog2/$Catalog1`
res=`rm $Catalog2/$Catalog1 -r`