shell script exercises

Keywords: shell less

Exercise questions:

  1. Write shell script to calculate the sum of 1-100;
  2. Write a shell script, ask to input a number, and then calculate the sum from 1 to the input number. If the input number is less than 1, input again until the correct number is input;
  3. Write shell script, copy all directories (only one level) under / root / directory to / tmp / directory;
  4. Write a shell script, and batch create the user "user 00, user" 01,... User "100. All users belong to the users group;
  5. Write a shell script to intercept the first column in the row containing the keyword "abc" in the file test.log (assuming the separator is "). Then sort the intercepted numbers (assuming the first column is a number), and print out the columns with more than 10 repetitions;
  6. Write a shell script to determine whether the input IP is correct (the rule of IP is n1.n2.n3.n4, in which 1 < N1 < 255, 0 < N2 < 255, 0 < N3 < 255, 0 < N4 < 255).

Exercise answer:

1. #! /bin/bash

sum=0

for i in `seq 1 100`; do
        sum=$[$i+$sum]
done

echo $sum

2. #! /bin/bash

n=0
while [ $n -lt "1" ]; do
        read -p "Please input a number, it must greater than "1":" n
done

sum=0

for i in `seq 1 $n`; do
        sum=$[$i+$sum]
done

echo $sum


3. #! /bin/bash

cd /root
for f in `ls `; do
        if [ -d $f ] ; then
                cp -r $f /tmp/
        fi
done



4. #! /bin/bash

groupadd users

for i in `seq 0 9`; do
        useradd -g users user_0$i
done



for j in `seq 10 100`; do
        useradd -g users user_$j
done



5. #! /bin/bash

awk -F':' '$0~/abc/ {print $1}' test.log >/tmp/n.txt
sort -n n.txt |uniq -c |sort -n >/tmp/n2.txt
awk '$1>10 {print $2}' /tmp/n2.txt



6. #! /bin/bash

checkip() {

        if echo $1 |egrep -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' ; then
                a=`echo $1 | awk -F. '{print $1}'`
                b=`echo $1 | awk -F. '{print $2}'`
                c=`echo $1 | awk -F. '{print $3}'`
                d=`echo $1 | awk -F. '{print $4}'`

                for n in $a $b $c $d; do
                        if [ $n -ge 255 ] || [ $n -le 0 ]; then
                                echo "the number of the IP should less than 255 and greate than 0"
                                return 2
                        fi
                done
        else

                echo "The IP you input is something wrong, the format is like 192.168.100.1"
                return 1
        fi

}



rs=1
while [ $rs -gt 0 ]; do
    read -p  "Please input the ip:" ip
    checkip $ip
    rs=`echo $?`
done

echo "The IP is right!"

Posted by tilde on Thu, 02 Jan 2020 21:34:21 -0800