Pokouším se zjistit jestli je možné udělat následující:
V prvním příkladu, který funguje mám strukturu příkazů takovouto:
select polozka in A B C; do prikazova_cast; done;
Čili vyberu si něco ze seznamu a pak se provede cyklus s příkazy. Tohle mohu opakovat libovolně-krát, protože je to uvnitř while cyklu, a když chci skončit, tak ukončím cyklus while.
A teď mám druhou situaci.
Příkazová část uvnitř do.. done; zůstává skoro stejná, až na to, že vše chci provést automaticky, místo ručně. Nechci ale kopírovat dlouhý příkazový blok, raději bych použil stejný cyklus. Problém je v tom, že se potřebuji v této situaci zbavit toho selectu.
Zkoušel jsem něco takového, ale asi to nemá správnou syntaxi:
automate=0
# automate=1
echo; echo 'Vyberte';
if [ "$automate" == "0" ]; then
select hledam in 'A' 'B' 'C';
fi;
do
echo $automate
break;
done;
Výsledek:
# if [ "$automate" == "0" ]; then
> select hledam in 'A' 'B' 'C';
> fi;
bash: chyba syntaxe poblíž neočekávaného tokenu „fi“
# do
bash: chyba syntaxe poblíž neočekávaného tokenu „do“
# echo $automate
0
# break;
bash: break: má smysl jen ve smyčkách „for“, „while“ nebo „until“
# done;
bash: chyba syntaxe poblíž neočekávaného tokenu „done“