hpr4088 :: Today I Learnt more Bash tips
Sgoti talks about supplying options to bash scripts
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;
- Source: In-Depth Series: Today I Learnt
- Source: In-Depth Series: Bash Scripting
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.