file bash Bad interpreter

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
schwarz89it
Prode Principiante
Messaggi: 4
Iscrizione: martedì 4 aprile 2017, 20:50
Sesso: Maschile

file bash Bad interpreter

Messaggio da schwarz89it »

Buonasera a tutti,
premetto che non uso mai ubuntu, ma per ragioni universitarie, mi trovo a lavorare su una macchina che installa linux.
Vengo immediatamente al punto della questione, prima di scrivere qui ho cercato in rete il modo in cui scrivere tramite file bash un file di testo.
Nel mio caso in particolare il nome del file deve essere input, senza estensione e al suo interno ci andrà un nome seguito da un numero della forma nome_$i dove i sarà il numero.
Riporto il codice

Codice: Seleziona tutto

#!/bin/bash
for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 ; do 

echo nome_$i > input
procedura che segue
prima che mi si faccia presente che il ciclo potrebbe essere sintetizzato con {0..12} premetto che non sapendo a che versione faccia rifermento il file, ho optato per una scrittura semlice seppur un po' lunga. Inoltre ho letto nei siti che dicono di usare a volte l'apice semplice a volte il doppio apice per racchiudere il testo, ma facendo una prova da terminale, ho visto che anche

Codice: Seleziona tutto

echo nome > input
funziona.
Ora prima di lanciare il bash, che con poca fantasia chiamerò operazione.sh compilo scrivendo da terminale chmod +x orerazione.sh che quello che ho precedentemente fatto con altri file; tuttavia questo, quando scrivo ./operazione.sh non funziona e l'errore che mi appare è:
-bash: ./operazione.sh: /bin/bash^M: bad interpreter: No such file or directory
Se qualcuno potesse illuminarmi sarebbe perfetto.
Ultima modifica di schwarz89it il martedì 4 aprile 2017, 21:44, modificato 2 volte in totale.
Avatar utente
giulux
Amministratore
Amministratore
Messaggi: 25440
Iscrizione: domenica 10 gennaio 2010, 12:17
Desktop: ubuntu 18.04
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Sesso: Maschile
Località: Roma

Re: file bash

Messaggio da giulux »

Benvenuto!
Sposto in programmazione.
Metti un titolo meno generico, che faccia capire il problema.
Ciao.
"Non è una segno di buona salute l'essere ben adattato ad una società malata". (Jiddu Krishnarmurti)
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: file bash Bad interpreter

Messaggio da UbuNuovo »

Devi quotare il testo da stampare (consigliabile) e usare la redirezione in append mode, tipo:

Codice: Seleziona tutto

for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 ; do
	echo "nome_$i" >> input
done
Salva l'Ucraina! 🇺🇦
schwarz89it
Prode Principiante
Messaggi: 4
Iscrizione: martedì 4 aprile 2017, 20:50
Sesso: Maschile

Re: file bash Bad interpreter

Messaggio da schwarz89it »

se uso >> invece che > quello che cambia in termini di output è che nel file input troverò alla fine del for un elenco con scritto

Codice: Seleziona tutto

nome_1
nome_2
ecc
in realtà a me interessava che il file venisse sovrascritto a ogni ciclo. Detto questo e provato il bash che mi è stato suggerito, permane l'errore di cui parlavo.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: file bash Bad interpreter

Messaggio da UbuNuovo »

Se deve essere sovrascritto ok.
Avevo letto in furia.
Quel "^M" nel messaggio di errore indica che il file è stato scritto con fine riga dos non unix, credo che sia quello l'errore.
Prova a salvare il file in formato unix.
Salva l'Ucraina! 🇺🇦
schwarz89it
Prode Principiante
Messaggi: 4
Iscrizione: martedì 4 aprile 2017, 20:50
Sesso: Maschile

Re: file bash Bad interpreter

Messaggio da schwarz89it »

posso chiedere come si fa a salvare in formato unix?
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: file bash Bad interpreter

Messaggio da UbuNuovo »

Per esempio con gedit , "File" ->"Salva come" e in basso nella finestra di salvataggio puoi selezionare codifica e fine riga.
Immagine
Salva l'Ucraina! 🇺🇦
schwarz89it
Prode Principiante
Messaggi: 4
Iscrizione: martedì 4 aprile 2017, 20:50
Sesso: Maschile

Re: file bash Bad interpreter

Messaggio da schwarz89it »

Gentilissimo, era proprio un problema di codifica.
Sfortunatamente io uso Windows e mi collego da remoto tramite putty, ma avevo un file bash generato già in codifica Unix e sono riuscito a risolvere.
Avrei potuto usare il comando nano, ma il problema era a quel punto di tastiera perché non riuscivo a scrivere il carattere #.
Problema risolto! Quella ^M sarebbe rimasta un'incognita per troppo tempo altrimenti.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: file bash Bad interpreter

Messaggio da UbuNuovo »

Altrimenti puoi usare sed per cancellare il carattere indesiderato.

Codice: Seleziona tutto

sed -i 's/\r$//' nome_del_file
Salva l'Ucraina! 🇺🇦
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti