Problema programma in bash

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

Problema programma in bash

Messaggioda steve01101 » domenica 30 dicembre 2018, 14:29

Salve ho un problema con un programma in bash, come si può vedere dal titolo, premetto che sono ancora inesperto, sto cercando di imparare. Sto cercando di fare un autoclick in bash, con l'aggiunta di xdotool. Unico problema di questo vprogramma è che mi restituisce un errore che non mi aspettavo, ossia "syntax error near unexpected token `done'". Cosa un po' ambigua dato che devo mettere una chiusura al programma. Sapete cosa può essere?
Codice: Seleziona tutto
while [ 8 ]; do
   if xdotool key == 'x'
      xdotool click 1
      if xdotool key == 'z'
         xdotool click 0
done
steve01101
Prode Principiante
 
Messaggi: 32
Iscrizione: giugno 2018
Desktop: backbox
Distribuzione: Ubuntu 16.04.4 LTS x86_64
Sesso: Maschile

Re: Problema programma in bash

Messaggioda vbextreme » domenica 30 dicembre 2018, 20:51

Codice: Seleziona tutto
if [[ quellochevuoi == qualcosa]] ; then
  esegui
fi

Quadre ; then e fi
Se vuoi comparare l'output del programma
Codice: Seleziona tutto
if [[ $(echo ciao) == "ciao" ]] ; then
  echo mondo
fi
Easy framework per il linguaggio C.
vbextreme hack your life
Avatar utente
vbextreme
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1212
Iscrizione: gennaio 2014
Desktop: lxde
Distribuzione: xubuntu 14.10

Re: Problema programma in bash

Messaggioda steve01101 » lunedì 31 dicembre 2018, 10:44

vbextreme Immagine ha scritto:
Codice: Seleziona tutto
if [[ quellochevuoi == qualcosa]] ; then
  esegui
fi

Quadre ; then e fi
Se vuoi comparare l'output del programma
Codice: Seleziona tutto
if [[ $(echo ciao) == "ciao" ]] ; then
  echo mondo
fi

riguardo al mio codice, è giusto? Dopo ogni if devo mettere fi? Sto usando xdotool.
Ultima modifica di steve01101 il lunedì 31 dicembre 2018, 11:10, modificato 1 volta in totale.
steve01101
Prode Principiante
 
Messaggi: 32
Iscrizione: giugno 2018
Desktop: backbox
Distribuzione: Ubuntu 16.04.4 LTS x86_64
Sesso: Maschile

Re: Problema programma in bash

Messaggioda DoctorStrange » lunedì 31 dicembre 2018, 10:54

Per chiudere ogni ciclo if devi mettere "fi", ma sono importanti anche altre regole di sintassi che non hai usato. Per testare l'uguaglianza tra due stringhe devi utilizzare le doppie parentesi quadre, e devi fare attenzione a lasciare uno spazio vuoto prima e dopo ogni coppia di parentesi, ed anche di usare i doppi apici per indicare la stringa di confronto.
Avatar utente
DoctorStrange
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1471
Iscrizione: ottobre 2015
Località: Roma, Italia
Desktop: Unity
Distribuzione: Ubuntu 16.04.03 Xenial Xerus
Sesso: Maschile

Re: Problema programma in bash

Messaggioda steve01101 » lunedì 31 dicembre 2018, 11:11

DoctorStrange Immagine ha scritto:Per chiudere ogni ciclo if devi mettere "fi", ma sono importanti anche altre regole di sintassi che non hai usato. Per testare l'uguaglianza tra due stringhe devi utilizzare le doppie parentesi quadre, e devi fare attenzione a lasciare uno spazio vuoto prima e dopo ogni coppia di parentesi, ed anche di usare i doppi apici per indicare la stringa di confronto.

sto usando xdotool, non so se vale la stessa regola, comunque provo. Ho fatto come dici:
Codice: Seleziona tutto
while [ 8 ]; do
   if [[ $(xdotool key) == "x" ]]; then
      xdotool click 1
   fi
       if [[ $(xdotool key) == "z" ]]; then
          xdotool click 0
      fi
done 
steve01101
Prode Principiante
 
Messaggi: 32
Iscrizione: giugno 2018
Desktop: backbox
Distribuzione: Ubuntu 16.04.4 LTS x86_64
Sesso: Maschile

Re: Problema programma in bash

Messaggioda DoctorStrange » lunedì 31 dicembre 2018, 11:22

Non conosco lo strumento "xdotool" e non sò cosa faccia. A giudicare dalla sola sintassi dello script, mi sembra corretto, ma io farei così:

Codice: Seleziona tutto
while [ 8 ]; do
   if [[ $(xdotool key) == "x" ]]; then
      xdotool click 1;
        elif [[ $(xdotool key) == "z" ]]; then
          xdotool click 0;
      fi
done 


Ammesso e non concesso che la sintassi del comando "xdotool" sia corretta.

Se devi testare una moltitudine di tasti, prendi in considerazione di sostituire la "if,elis,fi" con una "switch".
Avatar utente
DoctorStrange
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1471
Iscrizione: ottobre 2015
Località: Roma, Italia
Desktop: Unity
Distribuzione: Ubuntu 16.04.03 Xenial Xerus
Sesso: Maschile

Re: Problema programma in bash

Messaggioda steve01101 » lunedì 31 dicembre 2018, 11:25

DoctorStrange Immagine ha scritto:Non conosco lo strumento "xdotool" e non sò cosa faccia. A giudicare dalla sola sintassi dello script, mi sembra corretto, ma io farei così:

Codice: Seleziona tutto
while [ 8 ]; do
   if [[ $(xdotool key) == "x" ]]; then
      xdotool click 1;
        elif [[ $(xdotool key) == "z" ]]; then
          xdotool click 0;
      fi
done 


Ammesso e non concesso che la sintassi del comando "xdotool" sia corretta.

cosa potrei usare, sempre utilizzando il linguaggio bash, per fare un autoclick. Dando anche delle condizioni, se io premo x il programma inizia, "se io premo z il programma si ferma".
steve01101
Prode Principiante
 
Messaggi: 32
Iscrizione: giugno 2018
Desktop: backbox
Distribuzione: Ubuntu 16.04.4 LTS x86_64
Sesso: Maschile

Re: Problema programma in bash

Messaggioda vbextreme » lunedì 31 dicembre 2018, 11:28

Spiega meglio cosa vuoi fare
Codice: Seleziona tutto
xdotool key == 'qualcosa'

Non ha senso
xdotool key 'tasto'
Emula la pressione di un tasto della tastiera
Se vuoi rilevare la pressione di un tasto devi usare qualche altro tool
Easy framework per il linguaggio C.
vbextreme hack your life
Avatar utente
vbextreme
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1212
Iscrizione: gennaio 2014
Desktop: lxde
Distribuzione: xubuntu 14.10

Re: Problema programma in bash

Messaggioda steve01101 » lunedì 31 dicembre 2018, 11:32

vbextreme Immagine ha scritto:Spiega meglio cosa vuoi fare
Codice: Seleziona tutto
xdotool key == 'qualcosa'

Non ha senso
xdotool key 'tasto'
Emula la pressione di un tasto della tastiera
Se vuoi rilevare la pressione di un tasto devi usare qualche altro tool

cosa porei usare? Vorrei creare un autoclick, semplice. Con anche dlle condizioni if, per le quali se io premo un tasto l'autoclick parte, si avvia; se io premo un'altro tasto l'autoclick si ferma. Sempre in bash se possibile.
steve01101
Prode Principiante
 
Messaggi: 32
Iscrizione: giugno 2018
Desktop: backbox
Distribuzione: Ubuntu 16.04.4 LTS x86_64
Sesso: Maschile

Re: Problema programma in bash

Messaggioda DoctorStrange » lunedì 31 dicembre 2018, 11:34

Sò che esistono dei metodi per impostare degli "hotkey" personalizzati, in maniera da automatizzare alcune procedure ripetitive, anche perchè per fare quello che vuoi fare tu, non credo sia così semplice, non si esaurirebbe nel creare uno script che alla pressione di un tasto fa qualcosa, perchè prima dovresti manualmente avviare lo script.

Sospetto che tu voglia che questo script parta in automatico all'avvio del sistema, e quindi sarò necessario trasformare questo script in un file di unit, assegnargli privilegi di esecuzione, oppure modificare il sudoers per farlo eseguire, oppure impostare il setuid.

Logicamente se spiegassi meglio cosa vuoi fare sarebbe molto più semplice.

Per impostare un autoclick del mouse, anche se simulato, non dovresti prima specificare la posizione dove deve essere posizionato il cursore?
Avatar utente
DoctorStrange
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1471
Iscrizione: ottobre 2015
Località: Roma, Italia
Desktop: Unity
Distribuzione: Ubuntu 16.04.03 Xenial Xerus
Sesso: Maschile

Re: Problema programma in bash

Messaggioda vbextreme » lunedì 31 dicembre 2018, 11:39

Dipende tutto da come deve funzionare
Easy framework per il linguaggio C.
vbextreme hack your life
Avatar utente
vbextreme
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1212
Iscrizione: gennaio 2014
Desktop: lxde
Distribuzione: xubuntu 14.10

Re: Problema programma in bash

Messaggioda steve01101 » lunedì 31 dicembre 2018, 12:03

DoctorStrange Immagine ha scritto:Sò che esistono dei metodi per impostare degli "hotkey" personalizzati, in maniera da automatizzare alcune procedure ripetitive, anche perchè per fare quello che vuoi fare tu, non credo sia così semplice, non si esaurirebbe nel creare uno script che alla pressione di un tasto fa qualcosa, perchè prima dovresti manualmente avviare lo script.

Sospetto che tu voglia che questo script parta in automatico all'avvio del sistema, e quindi sarò necessario trasformare questo script in un file di unit, assegnargli privilegi di esecuzione, oppure modificare il sudoers per farlo eseguire, oppure impostare il setuid.

Logicamente se spiegassi meglio cosa vuoi fare sarebbe molto più semplice.

Per impostare un autoclick del mouse, anche se simulato, non dovresti prima specificare la posizione dove deve essere posizionato il cursore?

no, lo avvio io, però dopo con x faccio partire a cliccare, con z lo faccio smettere.
steve01101
Prode Principiante
 
Messaggi: 32
Iscrizione: giugno 2018
Desktop: backbox
Distribuzione: Ubuntu 16.04.4 LTS x86_64
Sesso: Maschile

Re: Problema programma in bash

Messaggioda vbextreme » lunedì 31 dicembre 2018, 12:35

Allora il comando read è quello che ti serve
Easy framework per il linguaggio C.
vbextreme hack your life
Avatar utente
vbextreme
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1212
Iscrizione: gennaio 2014
Desktop: lxde
Distribuzione: xubuntu 14.10


Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 6 ospiti