Jump to content

Shell script - dialog menu


gohan123

Recommended Posts


Bom dia a todos, sou programador junior e estou com um problema com a execução de itens com o dialog e não estou conseguindo resolver. Se alguém puder dar uma mão, agradeço.. O problema é o seguinte : O código abaixo que criei, gera um menu dinâmico a partir de um txt populado de outro script.. a geração do menu dinâmico funciona e esta ok, cada linha do menu tem 3 partes : um ID (deveria ser numérico), um texto (que deveria aparecer na linha do menu para ou usuário escolher) e um status (que não precisaria aparecer para o usuário, mas tudo bem).. O menu gera sem problemas, o problema é que eu gostaria de para cada seleção que o usuário escolhe-se, executasse o código correspondente do ID da linha e logo após, eliminasse a linha correspondente do menu. Caso eu reexecutasse de novo o código, o novo menu criado não deveria mais trazer a linha que foi executada exitosamente, mas não estou conseguindo fazer isso .. Código abaixo :

 #!/bin/bash
 # Define o nome do arquivo de relatório
report_file="scripts/hmenu/result.txt"
# Lê o arquivo result.txt no subdiretório scripts/ hmenu /
while read line; do
  # Extrai o ID, o texto e o status da linha
  id=$(echo $line | awk '{print $1}')
  text=$(echo $line | awk '{print $2 " " $3 " " $4 " " $5 " " $6 " " $7 " " $8 " " $9}')
  status=$(echo $line | awk '{print $10}')
  # Adiciona o item de checkbox ao menu
  options+=("$id" "$text" "$status")
done < $report_file

# Exibe o menu em forma de checkbox
selected=$(dialog --backtitle "Selecione os itens desejados:" \                   
--checklist " " 20 60 15 \                   
"${options[@]}" \                  
 --output-fd 1 \                   
--separate-output \                   
--scrollbar \                  
 3>&1 1>&2 2>&3)
 
# Executa cada item selecionado
for item in $selected; do
  if [ "$item" == "1" ]; then
    echo "Executando o código para o Item 1..."
    sed -i "/ $item/d" $report_file
 
fi
  if [ "$item" == "2" ]; then
    echo "Executando o código para o Item 2..."
    sed -i "/ $item/d" $report_file
  fi

done

Agradeço antecipadamente a ajuda!!!!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.