Portál AbcLinuxu, 11. května 2025 04:42
dialog --menu "$(< /root/sls/a.menu)" 0 0 0 dialog --menu "$(cat /root/sls/a.menu)" 0 0 0 dialog --menu "$(echo /root/sls/a.menu)" 0 0 0díky za pomoc
Řešení dotazu:
Předpokládám, že hledáte toto:
dialog --menu --file /root/sls/a.menu 0 0 0
Respektive lépe takto:
dialog --title "Testovací menu" --menu "Vyber položku:" 0 0 0 --file /root/sls/a.menu
kdy obsah souboru a.menu
vypadá např. takto:
1 Položka č.1 2 Položka č.2 3 Položka č.3 4 Položka č.4
Tak to asi čteme každý jiný man dialog
. V tom "mém" se totiž píše:
OPTIONS ... The "--file" option tells dialog to read parameters from the file named as its value. dialog --file parameterfile
Ale uznávám, že z toho nemusí být úplně pochopitelné, že to platí i pro položky v menu
místo tohoto "01" "První položka" "02" "Druhá položka" tohle 01+První položka 02+Druhá položkaDíky
Evidentně bude nezbytné, abych tady doplnil ještě zbytek toho odstavce z man dialog
Blanks not within double-quotes are discarded (use backslashes to quote single characters). The result is inserted into the command-line, replacing "--file" and its option value. Interpretation of the command-line resumes from that point. If parameterfile begins with "&", dialog interprets the following text as a file descriptor number rather than a filename.
Jinými slovy, odpověď na váš dotaz zní: "Ne, protože obsah souboru musí odpovídat syntaxi příkazu dialog
, resp. tomu, v jaké podobě očekává zadané parametry."
Nicméně nevidím důvod, proč by parametry s uvozovkami byly výrazně komplikovanější než bez nich. Je to pouze záležitost vhodně zpracovaného výstupu z "čehosi", co vám plní ten soubor pro menu.
Tak sem zkoušel dialog --title "Testovací menu" --menu "Vyber položku:" 0 0 0 --file ./list.mnu
a list.mnu :
A "Chroot ke stávajícímu systému"
S "Reinstalace zavaděče"
D "Příkazový řádek obecně"
F "Instalace"
G "Restart"
funguje. Jak ale výsledek dostat do proměnné ?
Netvrdím, že je to jediná varianta, ale obvykle používám "tempfile", tedy cosi jako:
#!/bin/bash INPUT=/tmp/menu.$$ dialog --title "Testovací menu" --menu "Vyberte položku:" 0 0 0 1 "Položka č.1" 2 "Položka č.2" 3 "Položka č.3" 2>"${INPUT}" selected=$(<"${INPUT}") echo "Vybral jste položku: $selected"
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.