vagyok parancsfájl írása a parancs kimenetének az a és b változó beolvasására. Ez a szkript
#!/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" és a szintaxishiba a következő:
line 3: syntax error near unexpected token `<" line 3: `read a b < <(awk /Application Server/ && !seen[$7]++{echo "%s ", $7} /tmp/ServerState)" De amikor ugyanazt a parancsot gépelem be a konzolba, minden gond nélkül nekem működik.
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 Minden segítséget nagyon értékelünk.
Megjegyzések
Válasz
 sh (amely a legtöbb (Debian-származtatott) rendszerben dash -hez van kapcsolva) nem engedi meg a  folyamat helyettesítését . Próbálja meg meghívni a következővel: bash script.sh. Ugyanaz a hívás a “> 
 /bin/bash  a szkriptben. 
Megjegyzések
- @MichaelDurrant Ah, módosításod most az ellenkezőjét jelenti annak, amit mondani akartam.
-  @muru nem tudom elfogadni a módosítást ' t o bash. Pontosandash.file $(which sh)output/bin/sh: symbolic link to 'dash'
-  Costas, hogy ' amit én jelentett. Michael Durrant megváltoztatta a szerkesztésemet, a dashhelyett abash. Köszönjük, hogy kijavította.
-  A folyamat helyettesítésére (<( echo foo )) gondolsz, nem pedig a parancs behelyettesítésére ($(echo foo)) (amely a POSIX specifikáció része).
- @chepner Igazad van. Köszönöm a megjegyzést. Javítva.
Válasz
Próbáltam a szkriptet sh file.sh néven meghívni, és a hibát kaptam . De amikor ugyanazt a szkriptet hívtam meg, mint a ./file.sh és a bash file.sh, az működik, és megadja a kívánt eredményt.
Válasz
Ezenkívül egyszerűen hozzáadhatja a szkript tetejére a sort:
#!/bin/bash  A terminálnak / konzolnak utasítja, hogy bash szkriptként hajtsa végre a szkriptet, és a “<( cmd )” folyamathelyettesítés rendben fog működni. / p> 
Hozzászólások
-  Ne feledje, hogy az OP ' szkript már tartalmazta ezt a shebangot, de az OP futott sh file.sh-kéntfile.shvagy./file.shnéven (lásd: saját válaszuk )
$ ./script.shshdon ' ne engedje meg a parancs behelyettesítését. Próbálkozzon a következővel:bash script.sh. Ugyanaz a hívás, amelyet./script.shhív, asha-bangkóddal hajtja végre, amely a bin / ** / bash ** a szkriptben.