2013-11-24 3 views
6

Ho eseguito uno script di distribuzione per configurare il server come root. Poi ho cercato di eseguire un altro script chiamato test.sh che aveva le seguenti linee in esso:Errore di sintassi: reindirizzamento imprevisto

# Logging 
exec > >(tee -a /var/log/test_full.log) 
exec 2> >(tee -a /var/log/test_error.log) 

Tuttavia quando provo questo ottengo il seguente errore:

test.sh: 19: test.sh: Syntax error: redirection unexpected 

che cosa potrebbe causare questo problema pensi? Non ho mai sentito di questo errore prima.

risposta

11

This answer risolve il problema, presupponendo che lo snippet di script sia completo.

In breve, si sta eseguendo la sceneggiatura tramite dash, non bash. La soluzione è semplice come aggiungere il necessario #!/bin/bash

Ciò che un sistema esegue di default se lo #! manca varia da sistema a sistema. Nel mio sistema, non ricevo il tuo errore perché una shell che comprende i tuoi reindirizzamenti viene eseguita per impostazione predefinita. Ho dovuto simulare il caso in cui dash sarebbe la shell di default per riprodurre il tuo errore.

+0

Ciao. Scusa per il dolore, ma entrambi i file iniziano con #!/Bin/bash – Jimmy

+1

Fatto: quando eseguo lo script '' test.sh'' come '' bash test.sh'' non c'è errore, ma quando lo eseguo con '' dash test.sh'' Ottengo l'errore esatto che ottieni. Per qualsiasi motivo esista sul tuo sistema, non è "bash'' che sta eseguendo il tuo script. – Louis

+1

Ah, è perché l'ho eseguito "sh test.sh" Penso! – Jimmy

7

Supponendo che si esegue lo script con ./myscript, assicurarsi che inizia i propri script con

#!/bin/bash 

e non #!/bin/sh o qualsiasi altra cosa. L'errore suggerisce che viene utilizzata un'altra shell di Bash.

Se il tuo script funziona davvero, controlla che /bin/bash non sia un collegamento simbolico e che sia effettivamente Bash con /bin/bash --version.

+0

Come sopra, entrambi i file iniziano con #!/Bin/bash – Jimmy

+1

Cosa restituisce l'output '/ bin/bash --version'? – damienfrancois

+0

Grazie per l'aiuto, ma l'ho risolto con entrambi i tuoi aiuti e ho potuto scegliere solo una risposta, ma spero che l'upvote aiuti :) – Jimmy