Re: bash script question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Inline posting with some additional pointers.

On 12/12/22 05:52, Linux for blind general discussion wrote:
#!/bin/bash

quiz() {

I would use 'local response', in shell you need to define the scope
yourself.

   echo "Starting quiz..."
   echo "What is 2+2?"
   read response

You are using response twice in your script, given that this code is the
body of a function should use 'local' to make it only usable in the
function (function scope) and not in all of your script (global scope).

   if [ "$response" == 4 ]

This is a bad practiss to use '==' in shell you can use one ('[
"$response" = '4' ]')
Given that you are comparing two strings you should also make 'four' a
string!

   then
     echo "You got it."
   else
     echo "That is incorrect."
   fi
}

until [ "$response" == 4 ]; do

Same as above.

   echo "Begin math quiz? (y/n)"
   read response
   if [ "$response" == "y" ] || [ "$response" == "Y" ]
   then

A more straightforward alternative would be to use a case statement.

     SECONDS=0

Why are you capitalizing your variable?

     quiz
     echo "The quiz took you $SECONDS seconds to complete."
   else
     echo "Exiting..."
     exit
   fi
done

HTH.

--
John Doe

_______________________________________________
Blinux-list mailing list
Blinux-list@xxxxxxxxxx
https://listman.redhat.com/mailman/listinfo/blinux-list




[Index of Archives]     [Linux Speakup]     [Fedora]     [Linux Kernel]     [Yosemite News]     [Big List of Linux Books]