Site Map - skip to main content

Hacker Public Radio

Your ideas, projects, opinions - podcasted.

New episodes every weekday Monday through Friday.
This page was generated by The HPR Robot at


hpr4088 :: Today I Learnt more Bash tips

Sgoti talks about supplying options to bash scripts

<< First, < Previous, , Latest >>

Thumbnail of Some Guy On The Internet
Hosted by Some Guy On The Internet on Wednesday, 2024-04-03 is flagged as Clean and is released under a CC-BY-SA license.
Bash tips, TIL, getopts. (Be the first).
The show is available on the Internet Archive at: https://archive.org/details/hpr4088

Listen in ogg, spx, or mp3 format. Play now:

Duration: 00:23:39

Bash Scripting.

This is an open series in which Hacker Public Radio Listeners can share their Bash scripting knowledge and experience with the community. General programming topics and Bash commands are explored along with some tutorials for the complete novice.

Today I Learnt more Bash tips

Sgoti talks about supplying options to bash scripts

  • Tags: Bash tips, TIL, getopts
#!/bin/bash
# License: GPL v3
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

#Name: showtime.sh
#Purpose: Time to make a show.
#Version: beta 0.01
#Author: SGOTI (Some Guy On The Internet)
#Date: 2023-12-29

#variables:

bindir=/usr/bin/

cat=${bindir}cat
date=${bindir}date
echo=${bindir}echo
mkdir=${bindir}mkdir

dirshow0=${HOME}/Music/hpr/shows
dirshow1=${dirshow0}/$(${date} +%Y)
dirqueue=${dirshow1}/queue/$(${date} +%F)
dirreserve=${dirshow1}/reserve-queue/$(${date} +%F)

#start:

function help() {
${cat} << EOH
Usage: $0 [-s] [-r] [-q] [-h] name-of-show

    -s    (Regular queue)
    -r    (Reserve queue)
    -q    (quit)
    -h    (help)

Examples:
        $0 -s name-of-show
        $0 -r name-of-show
        $0 -q
        $0 -h

EOH
}

## Use `getopts` to read user option into script. ##
while getopts ":s:r:q:h" option; do
    case $option in
        s)
        show=$OPTARG

function mkq () {
    ${mkdir} -v -p ${dirqueue}/${show}/edit;
    ${mkdir} -v -p ${dirqueue}/${show}/prod;
    ${cat} > ${dirqueue}/${show}/edit/${show}.md << _EOD_
# ${show} #

## subtitle ##

- Tags:



This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/ "CC-BY-SA 4.0 International").

_EOD_

    builtin pushd -n ${dirqueue}/${show}/edit;
    builtin pushd -n ${dirqueue}/${show}/prod;
}

        if [ -d ${dirshow1} ]; then
            mkq
        else
            ${echo} "Good Heavens! It's a new year.";
            ${mkdir} -v -p ${dirshow1};

            mkq
        fi
        ;;

        r)
        reserve=$OPTARG
function mkr () {
    ${mkdir} -v -p ${dirreserve}/${reserve}/edit;
    ${mkdir} -v -p ${dirreserve}/${reserve}/prod;
    ${cat} > ${dirreserve}/${reserve}/edit/${reserve}.md << _EOD_
# ${reserve} #

## subtitle ##

- Tags:



This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/ "CC-BY-SA 4.0 International").

_EOD_

    builtin pushd -n ${dirreserve}/${reserve}/edit;
    builtin pushd -n ${dirreserve}/${reserve}/prod;
}

        if [ -d ${dirshow1} ]; then
            mkr
        else
            ${echo} "Good Heavens! It's a new year.";
            ${mkdir} -v -p ${dirshow1};

            mkr
        fi
        ;;

        q)
        ${echo} "Goodbye.";
        exit
        ;;

        h)
        help
        exit
        ;;

        *)
        if [ -z "${option}" ]; then
            help
            exit 1
        fi

        ${echo} "Good Heavens! Invalid input.";
        help
        exit
        ;;
    esac
done


exit;
#!/bin/bash
# License: GPL v3
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

#Name: sc.sh
#Purpose:
#Version: beta 0.01
#Author: SGOTI (Some Guy On The Internet)
#Date: 2023-12-31

#variables:

bindir=/usr/bin/

cat=${bindir}cat
date=${bindir}date
echo=${bindir}echo
ls=${bindir}ls
screen=${bindir}screen

#start:

    ${echo} -e "\nStep 0: $(${date} +%F), $(${date} +%T)";

function help() {
${cat} << EOH
Usage: $0 [-b] [-s] [-k] [-h] name-of-show

    -b [y|n] (Create or kill, base sockets.)
    -s       (Create new sockets.)
    -k       (Kill sockets.)
    -h       (help menu)

Examples:
        $0 -b y
        $0 -b n
        $0 -s name-of-socket
        $0 -k name-of-socket
        $0 -h

EOH
}

    ${echo} -e "\nStep 1: $(${date} +%F), $(${date} +%T)";

while getopts ":b:s:k:h:" option; do
    case "${option}" in
        b)
        userinput0=$OPTARG
        if [ ${userinput0} == "y" ]; then
        ${screen} -dmS apps;
        ${screen} -dmS jobby;
        ${screen} -ls;
        elif [ ${userinput0} == "n" ]; then
        # You don't need the entire name to kill the socket.
        ${screen} -X -S "app" kill
        ${screen} -X -S "job" kill
        ${screen} -ls;
        else
        ${echo} "Good Heavens!"
        ${screen} -ls;
            help
            exit 1
        fi
        ;;

        s)
        userinput0=$OPTARG
        ${screen} -dmS "${userinput0}";
            clear
        ${screen} -ls;
            ${echo} -e "\nNew sockets: $(${date} +%F), $(${date} +%T)";
        ;;

        k)
        userinput0=$OPTARG
        ${screen} -XS ${userinput0} kill
            clear
        ${screen} -ls;
            ${echo} -e "\nKill sockets: $(${date} +%F), $(${date} +%T)";
        ;;

        h)
        help
            ${echo} -e "\nHelp menu: $(${date} +%F), $(${date} +%T)";
        exit
        ;;

        *)
        if [ -z "${option}" ]; then
            help
            exit 1
        fi

        ${echo} "Good Heavens! Invalid input.";
        help
        exit
        ;;
    esac
done

    ${echo} -e "\nStep 2: $(${date} +%F), $(${date} +%T)";

exit;

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.


Comments

Subscribe to the comments RSS feed.

Leave Comment

Note to Verbose Commenters
If you can't fit everything you want to say in the comment below then you really should record a response show instead.

Note to Spammers
All comments are moderated. All links are checked by humans. We strip out all html. Feel free to record a show about yourself, or your industry, or any other topic we may find interesting. We also check shows for spam :).

Provide feedback
Your Name/Handle:
Title:
Comment:
Anti Spam Question: What does the letter P in HPR stand for?
Are you a spammer?
Who is the host of this show?
What does HPR mean to you?