Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Script Bash

  1. #1

    Script Bash

    Ciao...

    Ho scritto un piccolo ciclo per generare una barra "pulsar" in modo che crei un attesa grafica all'utente... pero' da errore...

    codice:
    #!/bin/bash
    
    
    function kbar() {
    
    	dcopRef=`kdialog --progressbar "Kerneler" 0`
    	dcop $dcopRef setLabel "$1"
    
    	while [ "bar" != "false" ]
    	do
    
    		sleep 1
    		setProgress=$((setProgress+10))
    
    		dcop $dcopRef setProgress $setProgress
    
    	done
    
    }
    
    function killkbar() {
    
    	bar=false;
    	dcop $dcopRef close
    
    }
    
    
    kbar &
    
    sleep 5
    
    killkbar
    quando è dentro a kbar funziona e incrementa tutto perfettamente... poi passa a sleep per 5 secondi e quand è in killbar perde completamente i valori $bar e $dcopRef e quindi non riesce a chiudere la barra ...

    Come posso fare a renderli "globali"?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    21
    Per ciò che riguarda dcopRef la puoi dichiarare nel flusso principale e passarla come parametro alle due funzioni.

    Invece per dbar non credo che si possa fare niente in quanto quando esegui l'istruzione "kbar &" stai avviando un nuovo processo e quindi non c'è più relazione tra le variabili nel tuo script e quelle del nuovo processo.


    Non capisco perchè non fai così

    <code>
    function kbar() {

    dcopRef=`kdialog --progressbar "Kerneler" 0`
    dcop $dcopRef setLabel "$1"


    while [ ("bar" != "false") -a ( $i -lt 5) ]
    do

    sleep 1
    setProgress=$((setProgress+10))

    dcop $dcopRef setProgress $setProgress

    done

    }</code>

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    21
    Per ciò che riguarda dcopRef la puoi dichiarare nel flusso principale e passarla come parametro alle due funzioni.

    Invece per dbar non credo che si possa fare niente in quanto quando esegui l'istruzione "kbar &" stai avviando un nuovo processo e quindi non c'è più relazione tra le variabili nel tuo script e quelle del nuovo processo.


    Non capisco perchè non fai così

    codice:
    function kbar() {
    
    dcopRef=`kdialog --progressbar "Kerneler" 0`
    dcop $dcopRef setLabel "$1"
    
    i=0
    while [ ("bar" != "false") -a ( $i -lt 5) ]
       do
    
         sleep 1
         setProgress=$((setProgress+10))
    
         dcop $dcopRef setProgress $setProgress
    
         i=$((i+1))
    
        done
    
    }

  4. #4
    Il problema è che al posto di sleep 5 ci sono diversi comandi...
    ed è necessario che stiano fuori in modo che quando finiscono chiuda la barra pulsar..

    Allora faccio in modo di catturare il pid del nuovo flusso e di killarlo manualmente...

    Se no altre idee?

    Grazie dell'aiuto!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.