Salve, ho creato uno script /bin/setup.sh che inserisce tramite finestre di dialog --inputbox il nome di un file.txt, il file /bin/setup.sh una volta eseguito crea un file.sh con lo stesso nome del file.txt e ne copia il contenuto, ne assegna i permessi e lo esegue, il problema sta nel fatto che se lo richiamo da terminale con il comando bash setup.sh funziona tutto, ma se richiamo il file setup.sh da un lanciatore.desktop con l'istruzione Exec= gnome-terminal -- /bin/setup.sh crea il file.sh con il nome del file.txt gli assegna i permessi ma non copia il contenuto, qualcuno sa come mai da terminale copia il contenuto mentre richiamando il setup.sh da lanciatore non ne copia il contenuto nel file.sh di dstinazione. Il file.txt ovviamente ha la stessa struttura di un file.sh ma con estensione .sh e puo trovarsi in qualsiasi parte del file system

#!/bin/bash
 istruzioni
exit

mentre il file /bin/setup.sh ha la seguente struttura

#!/bin/bash
varTemp=`tempfile`
dialog --inputbox "Inserisci il nomeFile.txt:" 0 0 \
    2>$varTemp
    # inserisco il nome.txt nella variabile
    varScriptTemp=`cat $varTemp`
        # aggiorno il db
        sudo updatedb
        # assegno a varScript il perocrso del file.txt
        varScript=`locate $varScriptTemp`
# creazione della variabile che conterra il nomefile con .sh al posto di .txt
varScriptSh=${varScriptTemp/".txt"/".sh"}

# assegno alla variabile varFolder il nome della
# directory corrispondente al nome file.txt senza l'estensione .txt
varFolder=${varScriptTemp%.txt}
# creo la cartella
sudo mkdir /bin/$varFolder
default="bin/$varFolder"
# creazione file.sh
if sudo touch /$default/$varScriptSh ; then
        # controllo if se touch è andato a buon fine
        # asseganare i permessi
        if sudo chmod +x /$default/$varScriptSh ; then
            # controllo if se chmod è andato a buon fine
                # immetto il contenuto dell'originale.txt nel nuovo.sh
                if sudo sed "" $varScript > /$default/$varScriptSh ; then
                # comando touch, chmod e sed andati a buon fine
                    if dialog --title "Esegui!" --yesno "Installazione completata.\n****Scegli****\nsi : esegui il file $varScriptSh\nno : non esegui ed esci" 0 0 ; then
                        # esegui il file.sh
                        /$default/$varScriptSh
                        exit
                    else
                        # non esegui il file.sh ed esci
                        exit
                    fi
        else
            # comando chmod non andato a buon fine, sed non eseguito
            exit
        fi
    else
        # comando touch non andato a buon fine, chmod e sed non eseguiti
        exit
    fi
fi
exit

chiesto 11 Giu, 11:13

alfiogio's gravatar image

alfiogio
29224

potrebbe essere un problema di variabili di ambiente che non trova?

(11 Giu, 16:45) sacarde sacarde's gravatar image

Salve ho risolto, era un problema di permessi, inizialmente avevo messo

if sudo chmod +x /$default/$varScriptSh ; then

e non andava, poi ho provato con

if sudo chmod 777 /$default/$varScriptSh ; then

e anche richiamando da lanciatore.desktop il file /bin/setup.sh viene creata una cartella con il nome file.txt senza estensione .txt, si crea un file.sh con lo stesso nome del file.txt e ne riversa il contenuto dell'originale nel nuovo file.sh

coll. permanente

ha risposto 12 Giu, 10:27

alfiogio's gravatar image

alfiogio
29224

La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×95

domanda posta: 11 Giu, 11:13

domanda visualizzata: 79 volte

ultimo aggiornamento: 12 Giu, 10:27

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.