olen komentosarjan kirjoittaminen komennon tuloksen lukemiseksi muuttujiin a ja b. Tämä on komentosarja
#!/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" ja syntaksivirhe:
line 3: syntax error near unexpected token `<" line 3: `read a b < <(awk /Application Server/ && !seen[$7]++{echo "%s ", $7} /tmp/ServerState)" Mutta kun kirjoitan saman komennon konsoliin, se toimii minulle ilman ongelmia.
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 Kaikki tähän liittyvä apu on todella arvostettua.
Kommentit
Vastaa
 sh (joka useimmissa (Debianista johdetuissa) järjestelmissä on linkitetty dash) ei salli  prosessin korvaamista . Yritä kutsua bash script.sh. Sama kutsu ./script.sh suorittaa parametrilla sha-bang, joka on  /bin/bash  komentosarjassa. 
Kommentit
- @MichaelDurrant Ah, muokkauksesi tarkoittaa nyt päinvastaista kuin mitä tarkoitin sanoa.
-  @muru En voi ' hyväksyä muutosta t o bash. Tarkoitan tarkalleendash.file $(which sh)tuotos/bin/sh: symbolic link to 'dash'
-  Costas, että ' s mitä minä tarkoitti. Michael Durrant muutti muokkaukseni korvaamaan dashsanallabash. Kiitos, että korjait sen.
-  Tarkoitat prosessin korvaamista (<( echo foo )), ei komentojen korvaamista ($(echo foo)) (joka on osa POSIX-määritystä).
- @chepner Olet oikeassa. Kiitos kommentista. Korjattu.
Vastaa
Yritin kutsua komentosarjaa nimellä sh file.sh ja sain virheen . Mutta kun vedoin saman komentosarjan kuin ./file.sh ja bash file.sh, se toimii ja antaa halutun tuloksen.
vastaus
Lisäksi voit yksinkertaisesti lisätä rivin palavan komentosarjan yläosaan:
#!/bin/bash  Se käskee päätelaitteesi / konsolisi suorittamaan komentosarjan bash-skriptinä, ja prosessin korvaaminen ”<( cmd )” toimii hyvin. 
Kommentit
-  Huomaa, että OP ' -komentosarjassa oli jo tämä shebang, mutta OP oli käynnissä se nimellä sh file.shfile.shtai./file.sh(katso omat vastauksensa )
$ ./script.shshälä ' salli komennon korvaamista. Yritä käynnistääbash script.sh../script.sh-soittajan suorittama sama kutsu suoritetaansha-bang-koodilla, joka on komentosarjassa / bin / ** bash **.