diff options
| -rw-r--r-- | setup/createlivedrive.md | 4 | ||||
| -rw-r--r-- | setup/recoscript.sh | 241 | ||||
| -rw-r--r-- | setup/selectscript.sh | 395 | ||||
| -rw-r--r-- | setup/setupscr.sh | 277 |
4 files changed, 661 insertions, 256 deletions
diff --git a/setup/createlivedrive.md b/setup/createlivedrive.md new file mode 100644 index 0000000..0f00a45 --- /dev/null +++ b/setup/createlivedrive.md @@ -0,0 +1,4 @@ +1.Download an debian testing live iso, i recomend the [Live Xfce ISO](https://cdimage.debian.org/cdimage/weekly-live-builds/amd64/iso-hybrid/debian-live-testing-amd64-xfce.iso) for it is the most lightweight of them. +2. Flash it using [Rufus] (https://rufus.ie/nl/). The default settings are mostly fine, but make shute the Persistent partition size is big enough, becouse that is where all you files will be stored. If it asks you to download somthing from the internet the anser is usualy yes.. +3. In order to boot the system you will need to turn of the device where you will run it on. After that you will need to go into you system's boot menu. For the laptops at school you will need to enter it with this [manual](https://support.lenovo.com/us/en/solutions/ht104668-how-to-select-boot-device-from-bios-boot-menu-ideapad-thinkpad-thinkstation-thinkcentre-ideacentre). If you want to do it via another device you will need to search for an manual yourself. +4. Run the [setup script](https://github.com/mendelcollege-robotics/robotica/blob/main/setup/setupscr.sh) via *sh -c "$(curl -sSL https://github.com/mendelcollege-robotics/robotica/blob/main/setup/setupscr.sh)"* diff --git a/setup/recoscript.sh b/setup/recoscript.sh new file mode 100644 index 0000000..06eaff6 --- /dev/null +++ b/setup/recoscript.sh @@ -0,0 +1,241 @@ +#! /bin/bash +echo 'Welkom to the robosoccer automatic installment script!' +user=user +pass=2235 +# +#check internet connection +wget -q --spider https://github.com +if [ $? -eq 0 ]; then + echo 'Internet connection found' +else + echo 'Error, either your device is off-line or https://github.com is off-line.' + exit +fi + +try=0 +npw1 = $pass +while true; do + read -p "Would you like to change the default pasword for $user? [Y]es or [N]o: " chpw + case $chpw in + y*|Y*) + stty -echo + printf "Password: " + read npw1 + stty echo + printf "\n" + stty -echo + printf "Please repeat: " + read npw2 + stty echo + printf "\n" + if [ $npw1 = $npw2 ]; then + if [ $try = 1 ]; then + echo "The password will change at the end of the script" + break + fi + echo "Passwords didn't match, please try again, or stop atempting." + try=$((try+1)) + else + echo "Passwords did not match, please try again, or stop atempting." + fi + ;; + n*|N*) + break + ;; + *) + echo 'Unrecognised input, please try again' + ;; + esac + +done +while true; + read -p 'Please enter location of the secret file (secrets.tar.gz.gpg): ' secloc + if [ -f $secloc ]; then + echo "File found!" + break + fi + echo "File $secloc not found!" + read -p "Is the file on an external drive? [Y]es or [N]o: " inp4 + case $inp4 in + Y*|y*) + fdisk -l + read -p "Please enter the drive where the secrets are located.[/dev/sdXN](where x is an letter and N an number): " drv + mkdir /mnt/secdrive + mount $drv /mnt/secdrive + echo "The external drive is now mounted at /mnt/secdrive, please cd into it and locate where the secrets.tar.gz.gpg file is located. After this you can rerun the script." + exit + ;; + n*|N*) + echo "In that case i can not help you." + echo "In case you wish to exit to search the file use Ctrl-C" + ;; + *) + echo "Did not recognize input please retry" + ;; + esac +done + + +echo $pass | sudo -S -k apt install cowsay sl lolcat fortune xscreensaver xscreensaver-data xscreensaver-data-extra xscreensaver-gl xscreensaver-gl-extra xscreensaver-screensaver-bsod xscreensaver-screensaver-dizzy xscreensaver-screensaver-webcollage supertuxkart usbutils arduino usbutils unzip wget git gnupg-utils fdisk -y + +#openMV +echo $pass | sudo -S -k wget https://github.com/openmv/openmv-ide/releases/download/development/openmv-ide-linux-x86_64-4.6.1.tar.gz -O /tmp/openmv.tar.gz +echo $pass | sudo -S -k tar -xzf /tmp/openmv.tar.gz --directory /tmp/ +echo $pass | sudo -S -k sh /tmp/openmv-ide/setup.sh +echo $pass | sudo -S -k rm /tmp/openmv.tar.gz +echo $pass | sudo -S -k rm -rf /tmp/openmv-ide/ + +#arduino 2.x +echo $pass | sudo -S -k wget https://downloads.arduino.cc/arduino-ide/nightly/arduino-ide_nightly-20250529_Linux_64bit.zip -O /usr/share/arduino-ide_nightly-20250529_Linux_64bit.zip +echo $pass | sudo -S -k unzip /usr/share/arduino-ide_nightly-20250529_Linux_64bit.zip -d /usr/share/arduino-ide_nightly-20250529_Linux_64bit +echo $pass | sudo -S -k rm /usr/share/arduino-ide_nightly-20250529_Linux_64bit.zip +echo $pass | sudo -S -k wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/arduino2.desktop -O /usr/share/applications/arduino2.desktop + +#setup GIT/the repo +echo $pass | sudo -S -k gpg --output /tmp/secrets.tar.gz --decrypt $secloc +echo $pass | sudo -S -k tar -xzf /tmp/secrets.tar.gz /tmp/ +gpg --import /tmp/secrets/public.key +gpg --import /tmp/secrets/private.key +echo $pass | sudo -S -k mkdir -p "/home/$user/.ssh/" +echo $pass | sudo -S -k cp ./secrets/ssh-robosoccer "/home/$user/.ssh/ssh-robosoccer" +echo $pass | sudo -S -k cp ./secrets/ssh-robosoccer.pub "/home/$user/.ssh/ssh-robosoccer.pub" +sudo -u $user "git config --global user.signingkey 08242B7544C76B9E9B4EFB91C6C9DC589850AB7D" +echo $pass | sudo -S -k wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/.gitmessage.txt -O /home/$user/.gitmessage.txt +sudo -u $user "git config --global commit.template ~/.gitmessage.txt" + +#setup xscreensaver +echo $pass | sudo -S -k wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/xscreensaver.desktop -O /etc/xdg/autostart/xscreensaver.desktop +echo $pass | sudo -S -k apt remove gnome-screensaver +echo $pass | sudo -S -k wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/.xscreensaver -O "/home/$user/.xscreensaver" + +#setup password +case $chpw in + y*|Y*) + echo $pass | sudo -S -k chpasswd <<<"$user:$npw1" + ;; +esac + +sl -1 -F -a | lolcat +cat << "EOF" + + + + + + + ________________ + / \ + | Setup complete | + | see you | + | next time! | + \_____ _______/ + | / + | / + |/ + \|/ + ----------- + | | + | ~ 0 | + | | + | \_____/ | + ----------- + __/ \__ + / \ / \ + / |[] | | \ + / /| | |\ \ + | | | | | | | + | | | | | | | + |__| | | |__| + { } ==={}=== { } + /||\ | || | /||\ + | || | + | || | + | || | + | || | + /--- || ---\ + /______/ \______\ +EOF +sleep 2 + +cat << "EOF" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +EOF +fortune -a | cowsay -f tux | lolcat + diff --git a/setup/selectscript.sh b/setup/selectscript.sh new file mode 100644 index 0000000..0baf3df --- /dev/null +++ b/setup/selectscript.sh @@ -0,0 +1,395 @@ +#! /bin/bash +echo 'Welkom to the robosoccer guided installment script!' + +#check sudo +if [ `whoami` != root ]; then + echo Please run this script as root or using sudo + exit +fi +#check internet connection +wget -q --spider https://github.com +if [ $? -eq 0 ]; then + echo 'Internet connection found' +else + echo 'Error, either your device is off-line or https://github.com is off-line.' + exit +fi + +#installation options +echo "Please enter the username of the user it must be installed for." +read -p "Username: " user +if id -u "$user" >/dev/null 2>&1; then + echo " " +else + echo "$user"' does not exist' + while true; do + read -p "Do you wich to create this user? [Y]es or [N]o: " inp1 + case $inp1 in + y*|Y*) + echo 'creating user' + break + ;; + n*|N*) + echo 'No, exiting' + exit + ;; + *) + echo 'Unrecognised input, please try again' + ;; + esac + done + useradd $user +fi +echo 'You will now need to select what this script should configure.' +while true; do + read -p 'Do you want to install a desktop enviorment(grapical display support)? [Y]es or [N]o: ' DE + case $DE in + Y*|y*) + break + ;; + n*|N*) + break + ;; + *) + echo "Did not recognize input please retry" + ;; + esac +done +while true; do + read -p 'Do you want to install xscreesaver? [Y]es or [N]o: ' xscr + case $xscr in + Y*|y*) + break + ;; + n*|N*) + break + ;; + *) + echo "Did not recognize input please retry" + ;; + esac +done +while true; do + read -p 'Do you want to install arduino IDE version one and two? [Y]es or [N]o: ' ard + case $ard in + Y*|y*) + break + ;; + n*|N*) + break + ;; + *) + echo "Did not recognize input please retry" + ;; + esac +done +while true; do + read -p 'Do you want to install openMV IDE? [Y]es or [N]o: ' omv + case $omv in + Y*|y*) + break + ;; + n*|N*) + break + ;; + *) + echo "Did not recognize input please retry" + ;; + esac +done +while true; do + read -p 'Do you want to install and configure git? [Y]es [N]o: ' git + case $git in + Y*|y*) + read -p 'Please enter location of the secret file (secrets.tar.gz.gpg): ' secloc + if [ -f $secloc ]; then + echo "File found!" + break + fi + echo "File $secloc not found!" + read -p "Is the file on an external drive? [Y]es or [N]o: " inp4 + case $inp4 in + Y*|y*) + fdisk -l + read -p "Please enter the drive where the secrets are located.[/dev/sdXN](where x is an letter and N an number): " drv + mkdir /mnt/secdrive + mount $drv /mnt/secdrive + echo "The external drive is now mounted at /mnt/secdrive, please cd into it and locate where the secrets.tar.gz.gpg file is located. After this you can rerun the script." + exit + ;; + n*|N*) + echo "In that case i can not help you." + read -p "Do you still wich to configure git? [Y]es [N]o: " git + ;; + *) + echo "Did not recognize input please retry" + ;; + esac + ;; + n*|N*) + break + ;; + *) + echo "Did not recognize input please retry" + ;; + esac +done +while true; do + read -p 'Do you want to clone the robosoccer git repository? [Y]es or [N]o' gitrep + case $gitrep in + y*|Y*) + while true; do + read -p "Where do you wish to install the robosoccer repository? (Default: /home/$user/Documents/): " gitreploc + case $gitreploc in + "") + echo 'Left empty, using default folder.' + gitreploc="/home/$user/Documents/" + if [ -d "/home/$user/Documents/" ]; then + break + fi + read -p "/home/$user/Documents/ does not exist or is an file, do you wish to create this folder? [Y]es or [N]o: " inp3 + case $inp3 in + y*|Y*) + mkdir "$gitreploc" + if [ -d "$gitreploc" ]; then + echo "Somthing went wrong with the creation of the directory, exiting" + exit + fi + break + ;; + n*|N*) + echo "Will not clone git repository" + gitrep=N + break + ;; + *) + echo "Did not recognize input please retry" + ;; + esac + ;; + *) + if [ -d "$gitreploc" ]; then + echo "Using $gitreploc." + break + fi + read -p "$gitreploc does not exist or is an file, do you wish to create this folder?" inp2 + case $inp2 in + y*|Y*) + mkdir "$gitreploc" + if [ -d "$gitreploc" ]; then + echo "Somthing went wrong with the creation of the directory, exiting" + exit + fi + ;; + n*|N*) + echo "Will not clone git repository" + gitrep=N + break + ;; + *) + echo "Did not recognize input please retry" + ;; + esac + ;; + esac + done + break + ;; + n*|N*) + echo 'Selected no.' + break + ;; + *) + echo 'Unrecognised input, please try again' + ;; + esac +done + +apt install cowsay sl lolcat fortune -y + +#setup DE +case $DE in + Y*|y*) + apt install xfce4-goodies xfce4 lightdm -y + ;; +esac +#setup xscreensaver +case $xscr in + Y*|y*) + apt install xscreensaver xscreensaver-data xscreensaver-data-extra xscreensaver-gl xscreensaver-gl-extra xscreensaver-screensaver-bsod xscreensaver-screensaver-dizzy xscreensaver-screensaver-webcollage supertuxkart -y + wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/xscreensaver.desktop -O /etc/xdg/autostart/xscreensaver.desktop + apt remove gnome-screensaver + wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/.xscreensaver -O "/home/$user/.xscreensaver" + ;; +esac + +#install arduino ide +case $DE in + Y*|y*) + apt install arduino usbutils unzip wget -y + wget https://downloads.arduino.cc/arduino-ide/nightly/arduino-ide_nightly-20250529_Linux_64bit.zip -O /usr/share/arduino-ide_nightly-20250529_Linux_64bit.zip + unzip /usr/share/arduino-ide_nightly-20250529_Linux_64bit.zip -d /usr/share/arduino-ide_nightly-20250529_Linux_64bit + rm /usr/share/arduino-ide_nightly-20250529_Linux_64bit.zip + wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/arduino2.desktop -O /usr/share/applications/arduino2.desktop + ;; +esac + +#install openMV IDE +case $omv in + Y*|y*) + apt install usbutils -y + wget https://github.com/openmv/openmv-ide/releases/download/development/openmv-ide-linux-x86_64-4.6.1.tar.gz -O /tmp/openmv.tar.gz + tar -xzf /tmp/openmv.tar.gz --directory /tmp/ + sh /tmp/openmv-ide/setup.sh + rm /tmp/openmv.tar.gz + rm -rf /tmp/openmv-ide/ + ;; +esac + +#setup GIT +case $git in + Y*|y*) + apt install git wget gnupg-utils fdisk -y + gpg --output /tmp/secrets.tar.gz --decrypt $secloc + tar -xzf /tmp/secrets.tar.gz /tmp/ + gpg --import /tmp/secrets/public.key + gpg --import /tmp/secrets/private.key + mkdir -p "/home/$user/.ssh/" + cp ./secrets/ssh-robosoccer "/home/$user/.ssh/ssh-robosoccer" + cp ./secrets/ssh-robosoccer.pub "/home/$user/.ssh/ssh-robosoccer.pub" + sudo -u $user "git config --global user.signingkey 08242B7544C76B9E9B4EFB91C6C9DC589850AB7D" + wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/.gitmessage.txt -O /home/$user/.gitmessage.txt + sudo -u $user "git config --global commit.template ~/.gitmessage.txt" + ;; +esac + +#download git repo +case $gitrep in + Y*|y*) + sudo -u $user "git clone git@github.com:mendelcollege-robotics/robotica.git $gitreploc" + ;; +esac + +sl -1 -F -a | lolcat +cat << "EOF" + + + + + + + ________________ + / \ + | Setup complete | + | see you | + | next time! | + \_____ _______/ + | / + | / + |/ + \|/ + ----------- + | | + | ~ 0 | + | | + | \_____/ | + ----------- + __/ \__ + / \ / \ + / |[] | | \ + / /| | |\ \ + | | | | | | | + | | | | | | | + |__| | | |__| + { } ==={}=== { } + /||\ | || | /||\ + | || | + | || | + | || | + | || | + /--- || ---\ + /______/ \______\ +EOF +sleep 2 + +cat << "EOF" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +EOF +fortune -a | cowsay -f tux | lolcat diff --git a/setup/setupscr.sh b/setup/setupscr.sh index 16f72de..fee0db6 100644 --- a/setup/setupscr.sh +++ b/setup/setupscr.sh @@ -1,255 +1,4 @@ #! /bin/bash -echo 'Welkom to the robosoccer installment script!' - -#check sudo -if [ `whoami` != root ]; then - echo Please run this script as root or using sudo - exit -fi -#check internet connection -wget -q --spider https://github.com -if [ $? -eq 0 ]; then - echo 'Internet connection found' -else - echo 'Error, either your device is off-line or https://github.com is off-line.' - exit -fi - -#installation options -echo "Please enter the username of the user it must be installed for." -read -p "Username: " user -if id -u "$user" >/dev/null 2>&1; then - echo " " -else - echo "$user"' does not exist' - while true; do - read -p "Do you wich to create this user [Y]es or [N]o " inp1 - case $inp1 in - y*|Y*) - echo 'creating user' - break - ;; - n*|N*) - echo 'No, exiting' - exit - ;; - *) - echo 'Unrecognised input, please try again' - ;; - esac - done - useradd $user -fi -echo 'You will now need to select what this script should configure.' -while true; do - read -p 'Do you want to install a desktop enviorment(grapical display support)?' DE - case $DE in - Y*|y*) - break - ;; - n*|N*) - break - ;; - *) - echo "Did not recognize input please retry" - ;; - esac - -done -while true; do - read -p 'Do you want to install arduino IDE version one and two?' ard - case $ard in - Y*|y*) - break - ;; - n*|N*) - break - ;; - *) - echo "Did not recognize input please retry" - ;; - esac -done -while true; do - read -p 'Do you want to install openMV IDE' omv - case $omv in - Y*|y*) - break - ;; - n*|N*) - break - ;; - *) - echo "Did not recognize input please retry" - ;; - esac -done -while true; do - read -p 'Do you want to install and configure git? [Y]es [N]o' git - case $git in - Y*|y*) - read -p 'Please enter location of the secret file (secrets.tar.gz.gpg)' secloc - if [ -f $secloc ]; then - echo "File found!" - break - fi - echo "File $secloc not found!" - read -p "Is the file on an external drive?" inp4 - case $inp4 in - Y*|y*) - fdisk -l - read -p "Please enter the drive where the secrets are located.[/dev/sdXN](where x is an letter and N an number)" drv - mkdir /mnt/secdrive - mount $drv /mnt/secdrive - echo "The external drive is now mounted at /mnt/secdrive, please cd into it and locate where the secrets.tar.gz.gpg file is located. After this you can rerun the script." - exit - ;; - n*|N*) - echo "In that case i can not help you." - read -p "Do you still wich to configure git? [Y]es [N]o" git - ;; - *) - echo "Did not recognize input please retry" - ;; - esac - ;; - n*|N*) - break - ;; - *) - echo "Did not recognize input please retry" - ;; - esac - -done -while true; do - read -p 'Do you want to clone the robosoccer git repository? [Y]es or [N]o' gitrep - case $gitrep in - y*|Y*) - while true; do - read -p "Where do you wish to install the robosoccer repository? (Default: /home/$user/Documents/)" gitreploc - case $gitreploc in - "") - echo 'Left empty, using default folder.' - gitreploc="/home/$user/Documents/" - if [ -d "/home/$user/Documents/" ]; then - break - fi - read -p "/home/$user/Documents/ does not exist or is an file, do you wish to create this folder?" inp3 - case $inp3 in - y*|Y*) - mkdir "$gitreploc" - if [ -d "$gitreploc" ]; then - echo "Somthing went wrong with the creation of the directory, exiting" - exit - fi - break - ;; - n*|N*) - echo "Will not clone git repository" - gitrep=N - break - ;; - *) - echo "Did not recognize input please retry" - ;; - esac - ;; - *) - if [ -d "$gitreploc" ]; then - echo "Using $gitreploc." - break - fi - read -p "$gitreploc does not exist or is an file, do you wish to create this folder?" inp2 - case $inp2 in - y*|Y*) - mkdir "$gitreploc" - if [ -d "$gitreploc" ]; then - echo "Somthing went wrong with the creation of the directory, exiting" - exit - fi - ;; - n*|N*) - echo "Will not clone git repository" - gitrep=N - break - ;; - *) - echo "Did not recognize input please retry" - ;; - esac - ;; - esac - done - break - ;; - n*|N*) - echo 'Selected no.' - break - ;; - *) - echo 'Unrecognised input, please try again' - ;; - esac -done - -#setup DE -case $DE in - Y*|y*) - apt install xfce4-goodies xfce4 lightdm xscreensaver xscreensaver-data xscreensaver-data-extra xscreensaver-gl xscreensaver-gl-extra xscreensaver-screensaver-bsod xscreensaver-screensaver-dizzy xscreensaver-screensaver-webcollage supertuxkart -y - wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/xscreensaver.desktop -O /etc/xdg/autostart/xscreensaver.desktop - apt remove gnome-screensaver - wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/.xscreensaver -O "/home/$user/.xscreensaver" - ;; -esac - -#install arduino ide -case $DE in - Y*|y*) - apt install arduino usbutils unzip wget -y - wget https://downloads.arduino.cc/arduino-ide/nightly/arduino-ide_nightly-20250529_Linux_64bit.zip -O /usr/share/arduino-ide_nightly-20250529_Linux_64bit.zip - unzip /usr/share/arduino-ide_nightly-20250529_Linux_64bit.zip -d /usr/share/arduino-ide_nightly-20250529_Linux_64bit - rm /usr/share/arduino-ide_nightly-20250529_Linux_64bit.zip - wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/arduino2.desktop -O /usr/share/applications/arduino2.desktop - ;; -esac - -#install openMV IDE -case $omv in - Y*|y*) - apt install usbutils -y - wget https://github.com/openmv/openmv-ide/releases/download/development/openmv-ide-linux-x86_64-4.6.1.tar.gz -O /tmp/openmv.tar.gz - tar -xzf /tmp/openmv.tar.gz --directory /tmp/ - sh /tmp/openmv-ide/setup.sh - rm /tmp/openmv.tar.gz - rm -rf /tmp/openmv-ide/- - ;; -esac - -#setup GIT -case $git in - Y*|y*) - apt install git wget gnupg-utils fdisk -y - gpg --output /tmp/secrets.tar.gz --decrypt $secloc - tar -xzf /tmp/secrets.tar.gz /tmp/ - gpg --import /tmp/secrets/public.key - gpg --import /tmp/secrets/private.key - mkdir -p "/home/$user/.ssh/" - cp ./secrets/ssh-robosoccer "/home/$user/.ssh/ssh-robosoccer" - cp ./secrets/ssh-robosoccer.pub "/home/$user/.ssh/ssh-robosoccer.pub" - sudo -u $user "git config --global user.signingkey 08242B7544C76B9E9B4EFB91C6C9DC589850AB7D" - wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/.gitmessage.txt -O /home/$user/.gitmessage.txt - sudo -u $user "git config --global commit.template ~/.gitmessage.txt" - ;; -esac - -#download git repo -case $gitrep in - Y*|y*) - sudo -u $user "git clone git@github.com:mendelcollege-robotics/robotica.git $gitreploc" - ;; -esac - cat << "EOF" @@ -259,9 +8,10 @@ cat << "EOF" ________________ / \ - | Setup complete | - | see you | - | next time! | + | Welkome to | + | the robotics | + | linux setup | + | script!! | \_____ _______/ | / | / @@ -289,6 +39,21 @@ cat << "EOF" /--- || ---\ /______/ \______\ EOF +sleep 2 +while true; do + read -p "Please select (1)The automatic setup script, (2)The guided setup script or (3)Exit this script)? [1]/[2]/[3]: " chpw + case $chpw in + 1|a*|A*) + sh -c "$(curl -sSL https://github.com/mendelcollege-robotics/robotica/blob/main/setup/recoscr.sh)" + ;; + 2|g*|G*) + sh -c "$(curl -sSL https://github.com/mendelcollege-robotics/robotica/blob/main/setup/selectscr.sh)" + ;; + 3|e*|E*) + ;; + *) + echo 'Unrecognised input, please try again' + ;; + esac - - +done |
