Portál AbcLinuxu, 6. listopadu 2025 22:30
Řešení dotazu:
$1 měl hodnotu -s a v proměnné $2 hodnotu 400. V proměnné $0 je pak příkaz, kterým byl ten skript spuštěn. Pokud chcete používat pojmenované parametry, existují pro to různé knihovny jako výše zmíněná getopt. Můžete si to samozřejmě rozparsovat sám z těch proměnných (ty knihovny nedělají nic jiného), akorát není úplně jednoduché pokrýt hlavně ty okrajové případy tak, aby se to chovalo, jak uživatel očekává.
#!/bin/bash
aopt=false
bopt=false
barg=""
while getopts 'ab:' opt; do
case "$opt" in
a)
aopt=true ;;
b)
bopt=true
barg=$OPTARG ;;
esac
done
if $aopt; then
echo "Zadali jste přepínač -a"
fi
if $bopt; then
echo "Zadali jste přepínač -b s argumentem $barg"
fi
shift $((OPTIND-1))
Riadok:
shift $((OPTIND-1))zabezpečí že argumenty ktoré nasledujú po prepínači začnú od $1 'ab:' - dvojbodka označuje prepínač s parametrom
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.