2013-10-04 10 views
5

Ho questo script csh molto semplice.Evento non trovato csh

#!/bin/csh 
     echo "Hello World!" 
     echo "How are you today?" 

Ma sto ottenendo l'errore ": Event not found.

Cosa c'è di sbagliato?

+0

Modificare la prima riga in '#!/Bin/csh -f' e riprovare. Potrebbe essere correlato al tuo '.cshrc' o' .tcshrc'. – timrau

+0

provato. non funziona – Programmer

risposta

7

csh utilizza il carattere ! per la sostituzione della cronologia. Pertanto, nella sequenza !", lo " non viene considerato come virgoletta di chiusura per la stringa; piuttosto, la shell cerca qualcosa nella cronologia dei comandi che inizia con ", così come digitando !foo nella riga di comando si ripete il comando più recente che inizia con foo.

Almeno per il csh originale, questa sostituzione viene sempre eseguita, anche in stringhe con quotatura singola (pertanto la modifica delle virgolette doppie in virgolette singole non aiuta necessariamente).

L'unico modo per sfuggire a un personaggio ! è con una \ backslash:.

#!/bin/csh -f 
echo "Hello World\!" 
echo "How are you today?" 

(On alcuni sistemi, trovo che usando le virgolette singole, piuttosto che le doppie virgolette non evitare l'errore penso che sia perché in questi sistemi /bin/csh è un link simbolico a /bin/tcsh, che funziona un po 'diverso. non si deve dipendere da quello, se volete che il vostro script per essere portabile.)

Nota che ho anche aggiunto unOpzioneper la linea #!. Questo impedisce alla shell di eseguire il tuo $HOME/.cshrc all'avvio, ed è generalmente una buona idea per gli script csh. Li fa funzionare un po 'più veloce, e previene la dipendenza accidentale dal tuo .cshrc, che potrebbe essere un problema quando altri eseguono il tuo script.

E in ogni domanda sulla creazione di script csh, sto legalmente obbligato [*] per pubblicare questo link:

http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot

[*] Io non sono in realtà legalmente obbligati a inviare questo link.

+1

TL; DR: "Cosa c'è che non va?" "Csh". +1 a entrambe le domande e risposte. – stevesliva