问题
I saw in this topic that you can add a function in the shell login script instead of an alias if you want to use parameters. However, I placed the following code inside my .cshrc file in the section with aliasses:
function gf()
{
grep -n $1 `find .` | grep -v "can't open"
}
But when I type source .cshrc, I get the error message: Badly placed ()'s. Is the syntax different for a C shell than in a Bash shell? If so, what is the correct syntax?
回答1:
Unfortunately, you can't define functions in csh, like you can in most other shells. This feature does not exist in csh.
The only alternative is to create a script and place it in a directory on your PATH e.g. ~/bin.
回答2:
Here is my solution:
#!/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
来源:https://stackoverflow.com/questions/13916515/function-instead-of-alias-in-c-shell-login-script