🎥 HPR4088: Today I Learnt more Bash tips
Nachrichtenbereich: 🎥 Podcasts
🔗 Quelle: hackerpublicradio.org
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.
...
🎥 HPR4088: Today I Learnt more Bash tips
📈 85.58 Punkte
🎥 Podcasts
🎥 HPR4201: Today I learnt (2024-08-23)
📈 27.11 Punkte
🎥 Podcasts
🎥 HPR4178: Today I learnt (2024-07-27)
📈 27.11 Punkte
🎥 Podcasts
🎥 HPR4178: Today I learnt (2024-07-27)
📈 27.11 Punkte
🎥 Podcasts
🎥 HPR4113: Today I Learnt, sed hold/pattern space use.
📈 27.11 Punkte
🎥 Podcasts
🎥 HPR4048: Today I learnt: Ship’s Bells
📈 27.11 Punkte
🎥 Podcasts
🎥 HPR4027: Today I learnt (2023-12-18)
📈 27.11 Punkte
🎥 Podcasts
🎥 HPR4016: Today I learnt
📈 27.11 Punkte
🎥 Podcasts
🎥 HPR4002: Today I learnt - 2023-11-24
📈 27.11 Punkte
🎥 Podcasts
🔧 Attempt #12 - Learnt few new concepts in React
📈 19.95 Punkte
🔧 Programmierung
🔧 What I learnt in 10 years as an entrepreneur
📈 19.95 Punkte
🔧 Programmierung
🔧 I LEARNT JAVA ☕
📈 19.95 Punkte
🔧 Programmierung