2005-09-20 21:31:55 +08:00
\section function function - create a function
\subsection function-synopsis Synopsis
2005-09-21 07:42:00 +08:00
<tt>function [OPTIONS] NAME; BODY; end </tt>
2005-09-20 21:31:55 +08:00
\subsection function-description Description
2006-01-24 07:17:06 +08:00
- \c -b or \c --key-binding specifies that the function is a key biding. Key binding functions work exactly like regular functions except that they can not be tab-completed, and may contain the '-' character.
2005-10-21 20:39:45 +08:00
- <tt>-d DESCRIPTION</tt> or \c --description=DESCRIPTION is a description of what the function does, suitable as a completion description
- <tt>-j PID</tt> or <tt> --on-job-exit PID</tt> tells fish to run this function when the job with group id PID exits
- <tt>-p PID</tt> or <tt> --on-process-exit PID</tt> tells fish to run this function when the fish child process with process id PID exits
2006-01-24 07:17:06 +08:00
- <tt>-s</tt> or <tt>--on-signal SIGSPEC</tt> tells fish to run this function when the signal SIGSPEC is delivered. SIGSPEC can be a signal number, or the signal name, such as SIGHUP (or just HUP)
2005-10-21 20:39:45 +08:00
- <tt>-v</tt> or <tt>--on-variable VARIABLE_NAME</tt> tells fish to run this function when the variable VARIABLE_NAME changes value
2005-09-21 07:42:00 +08:00
2005-09-20 21:31:55 +08:00
This builtin command is used to create a new function. A Function is a
list of commands that will be executed when the name of the function
2006-01-24 07:17:06 +08:00
is entered. The function
2005-09-20 21:31:55 +08:00
<pre>
function hi
echo hello
end
2006-01-24 07:17:06 +08:00
</pre>
2005-09-20 21:31:55 +08:00
will write <tt>hello</tt> whenever the user enters \c hi.
If the user enters any additional arguments after the function, they
are inserted into the environment variable <a href="index.html#variables-arrays">array</a> argv.
\subsection function-example Example
2006-01-24 07:17:06 +08:00
<pre>function ll
2005-09-20 21:31:55 +08:00
ls -l $argv
2005-10-12 03:23:43 +08:00
end
2005-09-20 21:31:55 +08:00
</pre>
will run the \c ls command, using the \c -l option, while passing on any additional files and switches to \c ls.
2005-09-21 07:57:18 +08:00
2005-09-20 21:31:55 +08:00
<pre>
function mkdir -d "Create a directory and set CWD"
mkdir $argv
2006-01-24 07:17:06 +08:00
if test $status = 0
2005-09-20 21:31:55 +08:00
switch $argv[(count $argv)]
case '-*'
2006-01-24 07:17:06 +08:00
2005-09-20 21:31:55 +08:00
case '*'
cd $argv[(count $argv)]
return
end
end
end
2006-01-24 07:17:06 +08:00
</pre>
2005-09-20 21:31:55 +08:00
2006-01-24 07:17:06 +08:00
will run the mkdir command, and if it is successful, change the
2005-09-20 21:31:55 +08:00
current working directory to the one just created.
2005-09-21 07:42:00 +08:00