Size: 985
Comment:
|
← Revision 5 as of 2023-01-29 21:18:51 ⇥
Size: 1408
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 41: | Line 41: |
Arguments passed to a function implicitly overwrite the positional variables (`$1`, `$2`, and so on) as well as the argument count variable (`$#`). All of these will be reset to the original values upon the function's return. | Arguments passed to a function implicitly overwrite the [[Bash/Variables#Positional_Variables|positional variables]] as well as the [[Bash/Variables#Special_Variables|argument count variable]] (`$#`). All of these will be reset to the original values upon the function's return. |
Line 47: | Line 47: |
=== Local Scope === To mark a variable as belonging only to a function's scope, declare it with the `local` [[Bash/BuiltinCommands#Local|builtin]]. {{{ local x=y }}} |
|
Line 49: | Line 59: |
A function does not set the exit code. But it also does not clear the code. The final command in a function effectively sets the error code for the function as well. | By default a function does ''not'' set the exit code. But it also does not clear the code. The final command in a function effectively sets the error code for the function as well. |
Line 51: | Line 61: |
The `return` builtin causes the function to return immediately. | The `return` builtin causes the function to return immediately with a specified exit code. |
Line 53: | Line 63: |
{{{ isdirectory() { if [ -d "$1" ]; then return 0 else return 1 fi } if isdirectory "$some_directory"; then : fi }}} |
Bash Function
Declaration
A function is declared with one of:
myfunction() { : } function myfunction() { : }
If the function keyword is used, the parentheses are optional.
Usage
The above functions would be called like:
myfunction "first argument" "second argument"
Arguments
Arguments passed to a function implicitly overwrite the positional variables as well as the argument count variable ($#). All of these will be reset to the original values upon the function's return.
Note that $0 is not overwritten.
Local Scope
To mark a variable as belonging only to a function's scope, declare it with the local builtin.
local x=y
Error and Return Codes
By default a function does not set the exit code. But it also does not clear the code. The final command in a function effectively sets the error code for the function as well.
The return builtin causes the function to return immediately with a specified exit code.
isdirectory() { if [ -d "$1" ]; then return 0 else return 1 fi } if isdirectory "$some_directory"; then : fi