# [Risolto] Strano errore di bash

## baley

Ciao,

premetto che non ho usato molto spesso script di bash e quindi non lo conosco molto.

Devo eseguire uno script fatto da un'altra persona e mi restituisce errore sulla mia macchina gentoo mentre su un'altra (fedora) non da alcun errore.

Ho cercato di eliminare tutte le cose inutili in modo da riprodurre l'errore "all'ordine zero". Questo e' lo script:

```

#!/bin/sh

VAR="$(

cat << EOF_1

echo "1"

EOF_1

cat << EOF_2

echo "2"

EOF_2

)"

```

l'errore che mi restituisce e':

```

line 2: unexpected EOF while looking for matching `)'

line 10: syntax error: unexpected end of file

```

errore che non avviene se sostituisco EOF_1 con EOF oppure se eseguo lo script dall'altra macchina. L'altra macchina ha la versione 3.2.25 di bash mentre la mia ha la 4.0.37.

Questo errore puo' essere dovuto ad un bug della 4.0 o nello script si stanno facendo cose non ammesse dalla versione 4.0 di bash? Sempre che l'erorre sia dovuto alla versione...

Grazie a chiunque voglia aiutare un povero impedito!Last edited by baley on Mon Jun 14, 2010 9:18 pm; edited 1 time in total

----------

## Zizo

È il secondo EOF_2 a generare l'errore. Metti quattro EOF o EOF_1 e vedrai che funziona.

EDIT: O meglio, sembrerebbe l'accoppiata EOF_1/2 in successione, in quanto da soli non generano errori. Non ne conosco il motivo, e non trovo nulla a riguardo.

----------

## baley

In questo modo non compare più quell'errore ma ne compaiono altri più avanti nello script.

Ora mi chiedo: come è possibile che lo stesso script bash dia errori in alcune macchine e in altre no?

E' un problema della mia gentoo o della versione di bash?A questo punto dovrei provare un downgrade 

alla versione 3.1 o un update alla 4.1 per vedere se il problema si risolve...

----------

## baley

Con un upgrade alla versione 4.1 di bash il tutto si risolve. Certo che dei bug nella

versione stabile di bash non è una buona cosa...cosa è meglio fare in questi casi?si

apre un bug su gentoo bugzilla?

----------

## Zizo

Non penso sia un bug, ma un comportamento voluto. Probabilmente nella versione che avevi tu hanno tentato di dare un significato particolare a quei EOF_*, poi si sono accorti che è controproducente e hanno rimosso tale funzione.

Se fosse realmente un errore non ha nulla a che vedere con gentoo, ma bensì con bash stesso. Fai riferimento a http://tiswww.case.edu/php/chet/bash/bashtop.html#Bugs per segnalare l'eventuale bug a chi di dovere.

C'è da tener conto però che con la versione 4.1 il possibile bug non si presenta, quindi non ha senso riportarla come errore, semplicemente tieni bash-4.1.

----------

## baley

E' ovvio che gli sviluppatori di bash si sono già accorti di questo "bug" visto che nella 4.1 non c'è (sempre che si tratti di un bug e non di un comportamento voluto come hai detto tu). La mia idea era di avvisare chi mantiene bash in portage in modo da rendere stabile una versione che non ha questo problema...ma forse è un caso talmente particolare che per gli altri utenti gentoo non è un problema.

PS: al posto di EOF_* si può mettere qualsiasi altra stringa

----------

