Jeg er skrive et skript for å lese utdataene fra en kommando til variabel a og b. Dette er skriptet
#!/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" og får syntaksfeilen som:
line 3: syntax error near unexpected token `<" line 3: `read a b < <(awk /Application Server/ && !seen[$7]++{echo "%s ", $7} /tmp/ServerState)" Men når jeg skriver den samme kommandoen i konsollen, fungerer den for meg uten problemer.
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 All hjelp til dette blir virkelig verdsatt.
Kommentarer
Svar
 sh (som i de fleste (fra Debian-avledede) systemer er knyttet til dash) tillater ikke  prosessubstitusjon . Prøv å påkalle av bash script.sh. Samme anrop av ./script.sh utfører med sha-bang som er  /bin/bash  i skriptet ditt. 
Kommentarer
- @MichaelDurrant Ah, din modifikasjon betyr nå det motsatte av det jeg mente å si.
-  @muru Jeg kan ' t godta endringer t o bash. Jeg menerdashnøyaktig.file $(which sh)utgang/bin/sh: symbolic link to 'dash'
-  Costas, at ' er det jeg betydde. Michael Durrant endret redigeringen min for å erstatte dashmedbash. Takk for at du fikser det.
-  Du mener prosessubstitusjon (<( echo foo )), ikke kommandosubstitusjon ($(echo foo)) (som er en del av POSIX-spesifikasjonen).
- @chepner Du har rett. Takk for kommentaren. Reparert.
Svar
Jeg prøvde å påkalle skriptet som sh file.sh og fikk feilen . Men når jeg påkalte samme skript som ./file.sh og bash file.sh, fungerer det og gir ønsket resultat.
Svar
I tillegg kan du enkelt legge til linjen nedenfor øverst i skriptet:
#!/bin/bash  Den forteller terminalen / konsollen din å utføre skriptet ditt som bash-skript, og at prosessubstitusjonen din <( cmd ) «vil fungere bra. 
Kommentarer
-  Merk at OP ' skriptet allerede hadde den shebang, men OP var i gang det som sh file.shi stedet forfile.sheller./file.sh(se sitt eget svar )
$ ./script.shshdon ' t tillat kommandosubstitusjon. Prøv å påkalle avbash script.sh. Samme kall av./script.shutføres medsha-bangsom er / bin / ** bash ** i skriptet.