2012-12-17 4 views
11

Ho visto nell'argomento this che è possibile aggiungere una funzione nello script di accesso della shell anziché un alias se si desidera utilizzare i parametri. Tuttavia, ho messo il seguente codice all'interno del mio file .cshrc nella sezione con aliasses:Funzione al posto dell'alias nello script di accesso alla shell C

function gf() 
{ 
    grep -n $1 `find .` | grep -v "can't open" 
} 

Ma quando digito .cshrc fonte, ricevo il seguente messaggio di errore: messa male() 's. La sintassi è diversa per una shell C rispetto a una shell Bash? In tal caso, qual è la sintassi corretta?

risposta

15

Sfortunatamente, non è possibile definire le funzioni in csh, come nella maggior parte delle altre shell. Questa funzione non esiste in csh.

L'unica alternativa è creare uno script e inserirlo in una directory sul proprio PATH ad es. ~/bin.

+0

Grazie per la risposta. Sfortunatamente, questo non aiuta, ho ancora lo stesso errore in quel caso. – physicalattraction

+0

Ho aggiornato la mia risposta. Le funzioni non sono supportate in 'csh'. – dogbane

+0

Bummer. Ma buono a sapersi. Grazie. – physicalattraction

0

Ecco la mia soluzione:

#!/bin/csh 

if ("$1" == "run") goto $2 

echo "Now in default mode" 

echo "Calling myself" 

csh -f dummy run sub1 

csh -f dummy run sub2 

exit 


sub1: 

echo "In sub1" 

exit 

sub2: 

echo "In sub2" 

exit