(erledigt) bash case quoting, doppelt quoten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ren22

(erledigt) bash case quoting, doppelt quoten

Beitrag von ren22 » 26.01.2018 21:38:43

Hallo,

warum bekomme ich "xdotool: Unknown command: 1" ausgeworfen, wenn ich den code aus dem erste "case" nehme?

Code: Alles auswählen

case "$1" in
bla)
xdotool mousemove --sync "$gm1_xy" click 1
;;
esac
und warum muss man doppelt quoten das kein Fehler ausgegeben wird?

Code: Alles auswählen

case "$1" in
bla)
xdotool mousemove --sync ""$gm1_xy"" click 1
;;
esac
Zuletzt geändert von ren22 am 26.01.2018 22:37:23, insgesamt 1-mal geändert.

tobo
Beiträge: 1990
Registriert: 10.12.2008 10:51:41

Re: bash case quoting, doppelt quoten

Beitrag von tobo » 26.01.2018 21:51:12

Du quotest nicht zweimal, sondern gar nicht (Quote auf/zu Variable quote auf/zu). Also einfach alle weglassen. Verlangt werden wohl 2 Parameter, x und y. Wenn Du quotest übergibst du nur einen.

ren22

Re: bash case quoting, doppelt quoten

Beitrag von ren22 » 26.01.2018 21:57:08

achso, :facepalm: ja na klar, richtig, Denkfehler, dachte es genügt, wenn in der Variable

Code: Alles auswählen

gm1_xy="100 100"
steht ...

dann werde ich das mal zerglegen in variablen ... ala
xdotool mousemove --sync "$1gm" "$x" "$y" click 1

Danke

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bash case quoting, doppelt quoten

Beitrag von Meillo » 26.01.2018 22:21:49

Bitte noch den Thread auf erledigt setzen.
Use ed once in a while!

tobo
Beiträge: 1990
Registriert: 10.12.2008 10:51:41

Re: bash case quoting, doppelt quoten

Beitrag von tobo » 26.01.2018 22:26:19

ren22 hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 21:57:08
dann werde ich das mal zerglegen in variablen ... ala
xdotool mousemove --sync "$1gm" "$x" "$y" click 1
Kannste natürlich machen. Ich dachte jetzt aber eher an Variante 2, nur vor und hinter der Variablen alle " einfach weglassen. Und die Zuweisung gequotet belassen.

ren22

Re: (erledigt) bash case quoting, doppelt quoten

Beitrag von ren22 » 26.01.2018 22:38:59

du meinst so? : @tobo

Code: Alles auswählen

xdotool mousemove --sync "$gm_x" "$gm_y" click 1 
Zuletzt geändert von ren22 am 26.01.2018 22:49:20, insgesamt 1-mal geändert.

tobo
Beiträge: 1990
Registriert: 10.12.2008 10:51:41

Re: (erledigt) bash case quoting, doppelt quoten

Beitrag von tobo » 26.01.2018 22:48:30

Ne, so:

Code: Alles auswählen

gm1_xy="100 100"
...
xdotool mousemove --sync $gm1_xy click 1
Wobei, wenn das ungequotet da rumsteht, fragt man sich später irgendwann, wieso das nicht gequotet ist!? Ich nehme alles zurück: 2 Variablen und beide (unnötig) quoten ist besser/lesbarer.

Code: Alles auswählen

x=100
y=100
...
xdotool mousemove --sync "$x" "$y" click 1

owl102

Re: (erledigt) bash case quoting, doppelt quoten

Beitrag von owl102 » 26.01.2018 23:21:46

tobo hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 22:48:30
Wobei, wenn das ungequotet da rumsteht, fragt man sich später irgendwann, wieso das nicht gequotet ist!?
Dann schreibt man eben

Code: Alles auswählen

# shellcheck disable=SC2086
darüber, dann weiß man, daß das so gewollt ist.

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: (erledigt) bash case quoting, doppelt quoten

Beitrag von breakthewall » 26.01.2018 23:40:07

Alternativ kannst auch ein Array verwenden, was hinsichtlich mehrerer (auch positionaler) Parameter recht praktisch wäre. Dann kannst ebenfalls deine Doublequotes setzen, und umgehst somit das Problem einer regulären Variable in diesem Anwendungsfall.

Code: Alles auswählen

gm1_xy=(100 100)
xdotool mousemove --sync "${gm1_xy[@]}" click 1

Antworten