les*_*es2 55 bash shell function
在我的.bashrc中,我有一个名为hello的函数:
function hello() {
echo "Hello, $1!"
}
Run Code Online (Sandbox Code Playgroud)
我希望能够从shell调用hello(),如下所示:
$ hello Lloyd
Run Code Online (Sandbox Code Playgroud)
得到输出:
> Hello, Lloyd!
Run Code Online (Sandbox Code Playgroud)
有什么诀窍?
(当然,我想到的真正功能更复杂.)
编辑:这真的是由函数中的语法错误引起的,我想!:(
function coolness() {
if[ [-z "$1"] -o [-z "$2"] ]; then
echo "Usage: $0 [sub_package] [endpoint]";
exit 1;
fi
echo "Hi!"
}
Run Code Online (Sandbox Code Playgroud)
Pau*_*ce. 72
您可以导出功能.在~/.bashrc
定义函数后的文件中,添加export -f functionname
.
function hello() {
echo "Hello, $1!"
}
export -f hello
Run Code Online (Sandbox Code Playgroud)
然后,该函数将在shell提示符下以及您从那里调用的其他脚本中可用.
编辑:
Bash条件语句中的括号不是括号,它们是命令.他们必须在他们周围留出空间.如果要对条件进行分组,请使用括号.这是你的功能:
function coolness() {
if [ -z "$1" -o -z "$2" ]; then
echo "Usage: $0 [sub_package] [endpoint]";
exit 1;
fi
echo "Hi!"
}
Run Code Online (Sandbox Code Playgroud)
编写该条件的更好方法是:
if [[ -z "$1" || -z "$2" ]]; then
Run Code Online (Sandbox Code Playgroud)
因为双括号提供的功能比单个括号更多.
Cas*_*bel 27
你的函数中的测试不起作用 - 你不应该在-z子句周围有括号,if和open括号之间应该有一个空格.它应该是:
function coolness() {
if [ -z "$1" -o -z "$2" ]; then
echo "Usage: $0 [sub_package] [endpoint]";
exit 1;
fi
echo "Hi!"
}
Run Code Online (Sandbox Code Playgroud)
Lop*_*poc 17
在您的脚本中包含该行
source .bashrc
Run Code Online (Sandbox Code Playgroud)
尝试使用源构造它应该工作!
mih*_*hai 11
所做的任何更改.bashrc
仅在新的终端会话中生效.如果要将更改应用于当前终端会话,则必须指示shell重新读取.bashrc
.最简单的方法是使用.
命令,它是以下的同义词source
:
[user@linuxPc]$ . ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
70451 次 |
最近记录: |