在我的 .bashrc 中,我有一个名为 hello 的函数:
function hello() {
echo "Hello, $1!"
}
我希望能够从 shell 中调用 hello(),如下所示:
$ hello Lloyd
并得到输出:
> Hello, Lloyd!
有什么诀窍?
(当然,我想到的真正的功能要复杂得多。)
编辑:我认为这真的是由函数中的语法错误引起的! :(
function coolness() {
if[ [-z "$1"] -o [-z "$2"] ]; then
echo "Usage: $0 [sub_package] [endpoint]";
exit 1;
fi
echo "Hi!"
}
您可以导出函数。在定义函数后的 ~/.bashrc
文件中,添加 export -f functionname
。
function hello() {
echo "Hello, $1!"
}
export -f hello
然后该函数将在 shell 提示符下以及您从那里调用的其他脚本中可用。
请注意,没有必要导出函数,除非它们将在子进程中使用(上一句中的“也”)。通常,即便如此,最好还是将函数 source
到将要使用它的文件中。
编辑:
Bash 条件语句中的括号不是括号,它们是命令。他们周围必须有空间。如果要对条件进行分组,请使用括号。这是你的功能:
function coolness() {
if [ -z "$1" -o -z "$2" ]; then
echo "Usage: $0 [sub_package] [endpoint]";
exit 1;
fi
echo "Hi!"
}
一个更好的写条件的方法是:
if [[ -z "$1" || -z "$2" ]]; then
因为双括号比单括号提供更多的功能。