toshinori-m / practise

1 stars 0 forks source link

shell script演習 #25

Open hirosi1900day opened 1 year ago

hirosi1900day commented 1 year ago

1問目

スクリーンショット 2023-03-11 22 06 02

2問目

スクリーンショット 2023-03-11 22 10 35

3問目

スクリーンショット 2023-03-11 22 11 45

4問目

スクリーンショット 2023-03-11 22 13 12

5問目

スクリーンショット 2023-03-11 22 14 10

6問目

スクリーンショット 2023-03-11 23 00 19
hirosi1900day commented 1 year ago

問題1の解答例

#!/bin/bash

if [ $# -ne 2 ];
then
    exit 1;
fi

gender=$1;
age=$2;
if [ $age -lt 0 ];
then
    exit 1;
fi

if [ $gender = 'man' ];
then
    if [ $age -lt 20 ];
    then
        echo 'Man:Child';
    elif [ $age -lt 60 ];
    then
        echo 'Man:Adult';
    else
        echo 'Man:Elderly';
    fi
elif [ $gender = 'woman' ];
then
    if [ $age -lt 20 ];
    then
        echo 'Woman:Child';
    elif [ $age -lt 60 ];
    then
        echo 'Woman:Adult';
    else
        echo 'Woman:Elderly';
    fi
hirosi1900day commented 1 year ago

問題3解答例

#!/bin/bash

read -p 'ファイル名を入力してください: ' fh

if [ -f $fh ];
then
    read -p 'sum, avg, min, max, exit' command
    if [ $command = 'sum' ];
    then
        sum=0
        while read p;
        do
           sum=$(( sum + p ))
        done < $fh
        echo SUM: $sum
        exit 0
    elif [ $command = 'avg' ];
    then
        sum=0
        count=0
        while read p;
        do
            sum=$(( sum + p ))
            count=$(( count + 1 ))
        done < $fh
        echo AVG: $(( sum / count ))
        exit 0
    elif [ $command = 'min' ];
    then
        min=101
        while read p;
        do
            if [ $min -gt $p ];
            then
                min=$p
            fi
        done < $fh
        echo MIN: $min
        exit 0
    elif [ $command = 'max' ];
    then
        max=0
        while read p;
        do
            if [ $max -lt $p ];
            then
               max=$p
            fi
        done < $fh
        echo MAX: $max
        exit 0
    elif [ $command = 'exit' ];
    then
        exit 0
    else
        echo 'そのようなコマンドは存在しません'
        exit 1
    fi
else
    echo 'ファイルが存在しません'
    exit 1
fi
hirosi1900day commented 1 year ago

問題2のヒント

#!/bin/bash

ls

read -p 'ファイル名を入力してください: ' file_name
read -p 'ファイルに追記する値を入力してください: ' input_val

if [ ファイルが存在するかの判定 ];
then
    ファイルに追加処理を行う
else
    echo 'ファイルが存在しません';
fi
hirosi1900day commented 1 year ago

問題5

#!/bin/bash

if [ $# -ne 1 ];
then
    echo 'argument is wrong'
    exit 1
fi

function stop_exam7(){
    rm exam7.lock
    exit 0
}

if [ $1 = 'start' ];
then
    if [ -f 'exam7.lock' ];
    then
        echo 'Process is already running'
        exit 0
    else
        echo $$ > exam7.lock
        trap "stop_exam7" 2 15
        for i in `seq 1 1000`;
        do
            echo $i >> output_$$.txt
            sleep 1
        done
        rm exam7.lock
        exit 0
    fi
elif [ $1 = 'stop' ];
then
    if [ -f 'exam7.lock' ];
    then
        PID=-1
        while read p;
        do
           PID=$p
        done < 'exam7.lock'
        kill -15 $PID
    else
        echo 'process is not running'
        exit 0
    fi
elif [ $1 = 'status' ];
then
    if [ -f 'exam7.lock' ];
    then
        PID=-1
        while read p;
        do
            PID=$p
        done < 'exam7.lock'
        echo Process is running pid=$PID
     else
         echo 'Process is not running'
     fi
else
    echo 'wrong argument'
    exit 1
fi