In my .bashrc, I have a function called hello:
function hello() {
echo "Hello, $1!"
}
I want to be able to invoke hello() from the shell as follows:
$ hello Lloyd
And get the output:
> Hello, Lloyd!
What's the trick?
(The real function I have in mind is more complicated, of course.)
EDIT: This is REALLY caused by a syntax error in the function, I think! :(
function coolness() {
if[ [-z "$1"] -o [-z "$2"] ]; then
echo "Usage: $0 [sub_package] [endpoint]";
exit 1;
fi
echo "Hi!"
}
The test in your function won't work - you should not have brackets around the -z clauses, and there should be a space between if and the open bracket. It should read:
Any changes made to
.bashrc
will only take effect in a new terminal session. If you want to apply the changes to your current terminal session, you have to instruct the shell to re-read the.bashrc
. The shortest way to to this is to use the.
command, which is a synonym tosource
:Include in your script the line
try with the source construct it should work!
You can export functions. In your
~/.bashrc
file after you define the function, addexport -f functionname
.Then the function will be available at the shell prompt and also in other scripts that you call from there.
Edit:
Brackets in Bash conditional statements are not brackets, they're commands. They have to have spaces around them. If you want to group conditions, use parentheses. Here's your function:
A better way to write that conditional is:
because the double brackets provide more capability than the single ones.