View previous topic :: View next topic |
Author |
Message |
musv Advocate
Joined: 01 Dec 2002 Posts: 3333 Location: de
|
Posted: Fri May 13, 2016 9:03 am Post subject: [solved] Bash-Frage $(( |
|
|
Ich hab hier ein Script, bei dem der Vim-Parser meckert und die 2. Klammer rot anzeigt.
Code: | #!/bin/bash
ARCPATH=$((
sudo -u $1 check_config
) | awk '/Ziel/ {print $2} /dest/ {print $3}' ) |
Auch https://www.shellcheck.net/ schreibt an der Stelle:
Quote: | Line 3:
ARCPATH=$((sudo -u $1 check_config) | awk '/Ziel/ {print $2} /dest/ {print $3}' )
^-- SC1073: Couldn't parse this $((..)) expression.
^-- SC1009: The mentioned parser error was in this $((..)) expression.
^-- SC1072: Fix any mentioned problems and try again. |
Füge ich vor die 2. Klammer ein '$' ein, dann klappts, also:
Was ist jetzt an der Stelle konkret falsch? Das Script funktioniert ja offensichtlich mit beiden Varianten.
Last edited by musv on Fri May 13, 2016 10:59 am; edited 1 time in total |
|
Back to top |
|
|
py-ro Veteran
Joined: 24 Sep 2002 Posts: 1734 Location: Velbert
|
Posted: Fri May 13, 2016 9:34 am Post subject: |
|
|
Beides ist gültige Syntax und beides ist in dem Beispiel Sinnfrei. Der Parser wird meckern, weil eigentlich "$(())" auch noch mal eine spezielle Syntax ist. Ohne die inneren "()" sollte es immer noch tun.
$() ist == ´´ Wird durch die Ausgabe des Befehls substituiert.
$(( expression )) $(( 5+5 )) wird durch "10" substituiert.
(command ) erzeugt eine Sub-Shell und lässt die Kommandos in den Klammern darin laufen. Im Grunde bash -c 'command'
Bye
Py |
|
Back to top |
|
|
musv Advocate
Joined: 01 Dec 2002 Posts: 3333 Location: de
|
Posted: Fri May 13, 2016 10:59 am Post subject: |
|
|
Also ein Bug im Vim-Syntaxhighlighting.
Vielen Dank. |
|
Back to top |
|
|
py-ro Veteran
Joined: 24 Sep 2002 Posts: 1734 Location: Velbert
|
Posted: Fri May 13, 2016 12:10 pm Post subject: |
|
|
Jein, der Token $(( wird halt erwartet, dass es durch )) geschlossen wird. |
|
Back to top |
|
|
|