Quando si esegue uno script shell, viene restituito il seguente errore:
-bash: ./log_job.sh: /bin/bash^M: interprete difettoso: Nessun file o directory del genere Cause dell'errore:
.sh script è scritto su sistema Windows, quindi potrebbero esserci caratteri invisibili; dal prompt di errore sopra, è molto probabile che il file script sia in formato DOS, cioè la fine di ogni riga è identificata da \r\n, e il suo codice ASCII è 0x0D, 0x0A rispettivamente.
L'errore che viene visualizzato durante l'esecuzione di uno script shell è dovuto principalmente al fatto che il file di script di shell è in formato DOS, cioè la fine di ogni riga è identificata da \r\n, e la fine del file in formato UNIX è identificata da \n.
Nota speciale: ^M non è il ^ e la lettera M prodotti dal tasto shift + 6, è un carattere, il suo ASCII è 0x0D, il modo per generarlo è premere prima CTRL+V, e poi enter (o CTRL+M)
soluzione
Ci sono diversi modi per verificare se il file script è in formato DOS o UNIX.
(1) Verifica il formato dello script: cat-A file name Dai risultati visualizzati si può giudicare che la linea del file che termina in formato dos è ^M$, e quella che termina in formato Unix è $.
(2) Modificare il formato dello script: vi filename per aprire il file ed eseguire:set ff=unixImposta il file su unix ed esegui:wq, salvata in formato UNIX.
(3) Verifica il formato dello script: cat -A filename Dal risultato di visualizzazione, puoi giudicare che la linea del file che termina in formato dos è ^M$, e quella che termina in formato Unix è $.
|