Problema programma in bash

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
steve01101
Prode Principiante
Messaggi: 40
Iscrizione: giovedì 21 giugno 2018, 14:32
Desktop: backbox
Distribuzione: Ubuntu 16.04.4 LTS x86_64
Sesso: Maschile

Problema programma in bash

Messaggio da steve01101 »

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
Avatar utente
vbextreme
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1214
Iscrizione: domenica 12 gennaio 2014, 14:06
Desktop: lxde
Distribuzione: xubuntu 14.10

Re: Problema programma in bash

Messaggio da vbextreme »

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
steve01101
Prode Principiante
Messaggi: 40
Iscrizione: giovedì 21 giugno 2018, 14:32
Desktop: backbox
Distribuzione: Ubuntu 16.04.4 LTS x86_64
Sesso: Maschile

Re: Problema programma in bash

Messaggio da steve01101 »

vbextreme [url=https://forum.ubuntu-it.org/viewtopic.php?p=5104611#p5104611][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] 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, 10:10, modificato 1 volta in totale.
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2872
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: Problema programma in bash

Messaggio da DoctorStrange »

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.
steve01101
Prode Principiante
Messaggi: 40
Iscrizione: giovedì 21 giugno 2018, 14:32
Desktop: backbox
Distribuzione: Ubuntu 16.04.4 LTS x86_64
Sesso: Maschile

Re: Problema programma in bash

Messaggio da steve01101 »

DoctorStrange [url=https://forum.ubuntu-it.org/viewtopic.php?p=5104683#p5104683][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] 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  
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2872
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: Problema programma in bash

Messaggio da DoctorStrange »

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".
steve01101
Prode Principiante
Messaggi: 40
Iscrizione: giovedì 21 giugno 2018, 14:32
Desktop: backbox
Distribuzione: Ubuntu 16.04.4 LTS x86_64
Sesso: Maschile

Re: Problema programma in bash

Messaggio da steve01101 »

DoctorStrange [url=https://forum.ubuntu-it.org/viewtopic.php?p=5104688#p5104688][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] 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".
Avatar utente
vbextreme
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1214
Iscrizione: domenica 12 gennaio 2014, 14:06
Desktop: lxde
Distribuzione: xubuntu 14.10

Re: Problema programma in bash

Messaggio da vbextreme »

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
steve01101
Prode Principiante
Messaggi: 40
Iscrizione: giovedì 21 giugno 2018, 14:32
Desktop: backbox
Distribuzione: Ubuntu 16.04.4 LTS x86_64
Sesso: Maschile

Re: Problema programma in bash

Messaggio da steve01101 »

vbextreme [url=https://forum.ubuntu-it.org/viewtopic.php?p=5104690#p5104690][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] 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.
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2872
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: Problema programma in bash

Messaggio da DoctorStrange »

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
vbextreme
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1214
Iscrizione: domenica 12 gennaio 2014, 14:06
Desktop: lxde
Distribuzione: xubuntu 14.10

Re: Problema programma in bash

Messaggio da vbextreme »

Dipende tutto da come deve funzionare
Easy framework per il linguaggio C.
vbextreme hack your life
steve01101
Prode Principiante
Messaggi: 40
Iscrizione: giovedì 21 giugno 2018, 14:32
Desktop: backbox
Distribuzione: Ubuntu 16.04.4 LTS x86_64
Sesso: Maschile

Re: Problema programma in bash

Messaggio da steve01101 »

DoctorStrange [url=https://forum.ubuntu-it.org/viewtopic.php?p=5104693#p5104693][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] 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.
Avatar utente
vbextreme
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1214
Iscrizione: domenica 12 gennaio 2014, 14:06
Desktop: lxde
Distribuzione: xubuntu 14.10

Re: Problema programma in bash

Messaggio da vbextreme »

Allora il comando read è quello che ti serve
Easy framework per il linguaggio C.
vbextreme hack your life
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 10 ospiti