Usando loop para criar uma lista de rádio flexível em uma caixa de diálogo a partir de um script de shell

1

Eu quero criar um pequeno programa usando o Dialog para reproduzir arquivos de log criados com Script. O problema é que não consigo obter uma lista de rádio dinâmica que adicione automaticamente uma linha se um novo arquivo de log for criado. Então eu sei que eu "apenas" preciso usar um if loop como # for i in ...etc. com um contador que conta os arquivos de log, mas não consigo fazê-lo funcionar.

Então é isso que eu tenho agora:

#!/bin/bash
COUNTER=1
for i in $( ls /mnt/home/$USER/shell_logs/*.log); do
echo $i $COUNTER
let COUNTER=COUNTER+1
done

Eu só preciso fazer isso funcionar com meu radiolista:

#! /bin/bash
COUNTER=1
for i in $( ls /mnt/home/$USER/shell_logs/*.log); do
let COUNTER=COUNTER+1
done 
dialog --backtitle "Radiolist" \
--radiolist "test" 0 0 $COUNTER \
$COUNTER $i  <-- This is the main problem
    
por Meisie 24.03.2014 / 09:04

1 resposta

0

Para fazê-lo funcionar, você precisa adicionar as entradas da lista a uma variável dentro de seu loop for. Algo como:

#!/bin/bash

COUNTER=1
RADIOLIST=""  # variable where we will keep the list entries for radiolist dialog
for i in /mnt/home/$USER/shell_logs/*.log; do
    RADIOLIST="$RADIOLIST $COUNTER $i off "
    let COUNTER=COUNTER+1
done

dialog --backtitle "Radiolist" \
--radiolist "test" 0 0 $COUNTER \
$RADIOLIST
    
por Radu Rădeanu 24.03.2014 / 12:00