Portál AbcLinuxu, 8. května 2025 16:24
select
, ktera mi funguje, avsak pokud chci mit "vnorena" menu pod jednotlivymi volbami, skript se nespusti kvuli chybe parsovani a predpokladam, ze delam neco blbe, resp. ze mam konstrukci blbe zapsanou. Nicmene nemuzu ani za boha prijit na to proc. Potrebuji docilit toho aby napriklad pod volbou cislo 2, bylo dalsi menu s nekolika dalsimi polozkami.
Skript konci s nasledujici chybou:
./menutest.sh: line 14: syntax error near unexpected token `opts' ./menutest.sh: line 14: ` select opts in "${sub[@]}"'Pokud me nekdo dokazete navest co je spatne, moc mi tim pomuzete
#!/bin/bash PS3="Vyberte cislo: " items=("Item 1" "Item 2" "Item 3") sub=("TEST 1" "TEST 2" "TEST 3") while true; do select item in "${items[@]}" Quit do case $REPLY in 1) echo "Vybrano cislo #$REPLY odpovidajici volbe $item"; break;; 2) echo "Vybrano cislo #$REPLY odpovidajici volbe $item"; break;; select opts in "${sub[@]}" do case $REPLY in 1) echo "TEST OK"; break;; esac done 3) echo "Vybrano cislo #$REPLY odpovidajici volbe $item"; break;; $((${#items[@]}+1))) echo "Konec!"; break 2;; *) echo "Neznama volba $REPLY"; break; esac done done
Řešení dotazu:
#!/bin/bash PS3="Vyberte cislo: " items=("Item 1" "Item 2" "Item 3") sub=("TEST 1" "TEST 2" "TEST 3") while true; do select item in "${items[@]}" Quit do case $REPLY in 1) echo "Vybrano cislo #$REPLY odpovidajici volbe $item"; break;; 2) echo "Vybrano cislo #$REPLY odpovidajici volbe $item"; select opts in "${sub[@]}" do case $REPLY in 1) echo "TEST OK"; break;; esac done break;; 3) echo "Vybrano cislo #$REPLY odpovidajici volbe $item"; break;; $((${#items[@]}+1))) echo "Konec!"; break 2;; *) echo "Neznama volba $REPLY"; break; esac done done
shellcheck
vyhazoval chybu na radku 13, ale asi jsem u toho sedel dlouho a nemohl prijit na to co tam mam spatne. Nyni to funguje.
echo "Item 1\nItem 2\nItem 3" | fzf
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.