Syntaxfehler in der Nähe des unerwarteten Tokens „

Syntaxfehler in der Nähe des unerwarteten Tokens „

Ich schreibe ein Skript, um die Ausgabe eines Befehls in die Variablen a und b einzulesen. Dies ist das Skript

#!/bin/bash

read a b < <(awk '/Application Server/ && !seen[$7]++{printf "%s ", $7}' /tmp/ServerState)

echo "The value of a is $a"
echo "The value of b is $b"

und erhalte den Syntaxfehler:

line 3: syntax error near unexpected token `<'
line 3: `read a b < <(awk /Application Server/ && !seen[$7]++{echo "%s ", $7} /tmp/ServerState)'

Aber wenn ich denselben Befehl in die Konsole eingebe, funktioniert es bei mir ohne Probleme.

app@user:/tmp> read a b < <(awk '/Application Server/ && !seen[$7]++{printf "%s ", $7}' /tmp/ServerState)
app@user:/tmp> echo $a
FAILED
app@user:/tmp> echo $b
STARTED

Ich bin für jede Hilfe sehr dankbar.

Antwort1

sh(das in den meisten (von Debian abgeleiteten) Systemen mit verknüpft ist dash) erlaubt nichtProzesssubstitution. Versuchen Sie den Aufruf mit bash script.sh. Derselbe Aufruf mit ./script.sh wird ausgeführt, sha-bangwobei/bin/bashin Ihrem Skript.

Antwort2

Ich habe versucht, das Skript als sh file.sh aufzurufen und habe den Fehler erhalten. Aber als ich dasselbe Skript als ./file.sh und bash file.sh aufgerufen habe, funktionierte es und lieferte das gewünschte Ergebnis.

verwandte Informationen