Portál AbcLinuxu, 1. května 2025 21:45
function dbg_init () { case "$1" in '-') exec 4>&1 ;; '') exec 4>/dev/null ;; *) exec 4>>"$1" ;; esac } # dbg_init # dbg_init '-' # dbg_init "/var/log/${PROGNAME}.log" function dbg() { echo -e "DBG: ${@}" >&4 }
Navíc perl opravdu není všude ...To BASH taky ne
Ale i do Windows se dá doinstalovat...To BASH taky ... (já ve Win používám ZSH, ale BASH jsem taky někde viděl) Vždyť Win mají POSIX layer neeeeee
software, jehož tvůrci si bůhvíproč mysleli, že musí umět všechno
Spíš než takový monstrózní software považuji za ideální jednotlivé komponenty, které jsou integrované nějakým lepším způsobem, než jsou skripty v BASHi. Mám radši systém tažený událostmi, než takový, který musí být neustále popoháněn pomocí skriptů* aby vůbec fungoval (obvykle periodicky spouštěných cronem).
Ale je fakt, že svět není ideální a bez skriptů se člověk neobejde, alespoň bez těch init.d (pokud nepoužívá nejmenovaný úžasný OS se svcadm).
BTW: to RFC se mi líbí a patička je super
*) které navíc psal admin nikoli programátor a tester kolem nich neprošel ani cestou na oběd
Spíš než takový monstrózní software považuji za ideální jednotlivé komponenty, které jsou integrované nějakým lepším způsobem, než jsou skripty v BASHi. Mám radši systém tažený událostmi, než takový, který musí být neustále popoháněn pomocí skriptů* aby vůbec fungoval (obvykle periodicky spouštěných cronem).Teď mluvíš o Emacsu...
Aneb ukaž mi software, který dělá úplně všechno.
Bez váhání dávám Emacs. ^_^
#!/bin/sh
help(){
echo Usage: $0
}
if [ $# -lt 1 ]
then
help
else
echo OK
fi
while getopts h opt
do
case $opt in
h) help;;
\?) help;;
esac
done
shift $(($OPTIND - 1))
echo Running
[ "s${DBG}" = "sy" ] && echo -e "DBG: ${@}" 1>&2
Jaký je rozdíl oproti
[ "${DBG}" = "y" ] && echo -e "DBG: ${@}" 1>&2
?
$DBG && echo -e "DBG: $@" >&2
$ DBG=true $ $DBG && echo "OK" OK $ $ DBG=false $ $DBG && echo "OK" $ $ DBG=jabaduba $ $DBG && echo "OK" bash: jabaduba: command not found # šlo by ošetřit pomocí set -e - bash by po takovéto chybě nepokračovat $ $ unset DBG $ $DBG && echo "OK" OK # je to opravdu chování které autor chtěl? $2) na shellech kde "true", "false" a "test" jsou uvnitř shellu je téměř jedno který z nich voláte a s "test" máte jistotu CO to udělá.
# set |grep DBG # [ "${DBG}" = "y" ] && echo Yes || echo No No # DBG=y # [ "${DBG}" = "y" ] && echo Yes || echo No Yes #
# [ "${DBG:-n}" = "y" ] && echo Yes || echo No
$ echo "${QQQ:-www}" www $Nedostanete se někdo ke starším verzím? Jak je to tam?
Fakt ... koukam jako trubka. :->Zlomená?
$ DBG="y" $ $ [ "s${DBG}" = "sy" ] && echo OK OK $ $ [ "${DBG}" = "y" ] && echo OK OK $ $ [ ${DBG} = "y" ] && echo OK OK $ $ [ $DBG = "y" ] && echo OK OK $ $ $ $ DBG="n" $ $ [ "s${DBG}" = "sy" ] && echo OK $ $ [ "${DBG}" = "y" ] && echo OK $ $ [ ${DBG} = "y" ] && echo OK $ $ [ $DBG = "y" ] && echo OK $ $ $ $ $ unset DBG $ $ [ "s${DBG}" = "sy" ] && echo OK $ $ [ "${DBG}" = "y" ] && echo OK $ $ [ ${DBG} = "y" ] && echo OK bash: [: =: unary operator expected $ $ [ $DBG = "y" ] && echo OK bash: [: =: unary operator expected $
žádný Když tak o tom přemýšlím tak je to trik který jsem se naučil na nějakém opravdu starém U*xu. Mám pocit, že to souviselo se shellem v POSIX režimu, ale už opravdu nevím.ten "trik" je o imho viac o používaní uvodzoviek ako o starom U*x-e
test
, které si neporadí s [ "$x" = "y" ]
, není-li proměnná x
nastavena. Pokud je ale na začátku skriptu '#!/bin/bash
', je zbytečné toto zaříkávání provádět.
Pokud je ale na začátku skriptu '#!/bin/bash
', je zbytečné toto zaříkávání provádět.
Jasně, prostě se člověk snaží psát přenositelně, i když má rád BASH. Schválně to otestuji v POSIX režimu a potom na /bin/shna HP/UX a solarisu ... dám vědět.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.