#!/bin/sh # Demo3 tehtava 1 list="a b c d e f" reverse_list="" for i in $list do reverse_list="$i $reverse_list" done echo $reverse_list
Teht 2
#!/bin/sh
# Demo 3 tehtava 2
files=\*.tex
tar_file=tex_files.tar
hak=/home/mjev/
find "$hak" -name "$files" -exec tar -rf $tar_file {} \;
Teht 3
#!/bin/ksh
# Demo 3 tehtava 3
# Tapa 1 (tehoton)
#
trap 'echo "kerittiin $n kierrosta"' 2
n=0
lista="$*"
set -A X $lista
echo "Jarjestamaton lista: $lista"
koko=${#X[*]}
i=0
while [ $i -lt $koko ]
do
let j=$i+1
y=${X[i]}
z=${X[j]}
let n=$n+1
if [ -n "$z" ] ; then
if [[ $y > $z ]]; then
X[i]=$z
X[j]=$y
i=0
else
let i=$i+1
fi
else
let i=$i+1
fi
done
echo "Jarjestetty lista (tapa 1):${X[*]}"
echo "Vertailuja tehtiin:$n"
n=0
#
# Tapa 2
#
lista="$*"
while [ 1 ] ;do
for i in $lista ;do
if test "$l" = "" ;then
a=$i; b=$a; l=1 ; continue
else
b=$i
fi
let n=$n+1
if [[ $a > $b ]] ;then
c=$a; a=$b; b=$c; muutos=1
fi
jono="$jono $a"
a=$b;
done
lista="$jono $b"
jono=""; l=""
if test "$muutos" = "" ;then
break;
fi
muutos=""
done
echo "Jarjestetty lista (tapa 2):$lista"
echo "Vertailuja tehtiin:$n"
Teht 4
#!/bin/sh # Demo 3 tehtava 4 if [ $UID != 0 ]; then echo "Must be root!" exit fi pw_file=passwd echo -n "Anna kayttajatunnus:" read user if grep "$user" "$pw_file" then echo "Antamasi kayttaja $user loytyy jo!" exit fi echo -n "Anna UID:" read uid echo -n "Anna GID:" read gid echo -n "Anna kayttajan nimi:" read name echo -n "Anna kotihakemisto:" read home echo -n "Anna shell:" read shll mkdir -p "$home" cp /etc/skel/.* "$home" chmod -R 700 "$home" chown -R "$uid"."$gid" "$home" echo "$user:x:$uid:$gid:$name:$home:$shll" >> $pw_file
Teht 5
#!/bin/sh
# Demo 3 tehtava 5
#
# HT. lisaa tehtavaan kayttajan syotteen tarkistukset
# ja muut mahdolliset virhetilanteiden kasittelyt
#
if [ $UID != 0 ]; then
echo "Must be root!"
exit
fi
loytyi=0
pw_file=passwd
cc_passwd=/home/mjev/syksy99_unix/demo3/ru_passwd
exec 3< "$cc_passwd"
tark_uid () {
uid=$1
if grep "$uid" "$pw_file"
then
return 1
fi
return 0
}
kysy_tiedot () {
user=$1
pal=1
while [ $pal = 1 ]
do
echo -n "Anna UID:"
read uid
tark_uid $uid
pal=$?
done
echo -n "Anna GID:"
read gid
echo -n "Anna kayttajan nimi:"
read name
echo -n "Anna kotihakemisto:"
read home
echo -n "Anna shell:"
read shll
mkdir -p "$home"
cp /etc/skel/.* "$home"
chmod -R 700 "$home"
chown -R "$uid"."$gid" "$home"
echo "$user:x:$uid:$gid:$name:$home:$shll" >> "$pw_file"
exit
}
echo -n "Anna kayttajatunnus:"
read user
if grep "$user" "$pw_file"
then
echo "Antamasi kayttaja $user loytyy jo!"
exit
fi
oldifs="$IFS"
IFS=":"
while read cc_user pw cc_uid cc_gid cc_name cc_home cc_shll
do
if [ "$user" = "$cc_user" ] ; then
loytyi=1
break
fi
done <&3
IFS="$oldifs"
tark_uid "$cc_uid"
pal=$?
if [ "$loytyi" -eq 1 -a "$pal" -eq 0 ]
then
echo "Antamasi kayttaja $user loytyi"
echo "$user:x:$cc_uid:$cc_gid:$cc_name:$cc_home:$cc_shll"
echo -n "Lisataanko [K/e]?"
read vast
if [ "X$vast" = "X" -o "$vast" = "K" -o "$vast" = "k" ]
then
mkdir -p "$cc_home"
cp /etc/skel/.* "$cc_home"
chmod -R 700 "$cc_home"
chown -R "$cc_uid"."$cc_gid" "cc_$home"
echo "$user:x:$cc_uid:$cc_gid:$cc_name:$cc_home:$cc_shll" >> $pw_file
else
echo "Anna tiedot kayttajasta $user"
kysy_tiedot $user
fi
elif [ "$loytyi" -eq 1 -a "$pal" -eq 1 ] ; then
echo "Antamasi kayttaja loytyi, mutta UID ei ole yksikasitteinen"
kysy_tiedot $user
fi