Questions tagged «bash-functions»

1
Bash脚本函数名称包含双冒号'::'
我今天遇到了一个Bash脚本,其中包含带有双冒号的函数名称::,例如file::write()和file::read()。我以前从未在Bash脚本中看到过这种语法,当我调用该脚本时,它运行得很好(令我惊讶)。 在系统上(和在线)上查看Bash的手册页后,我在文档中找不到支持此函数名语法的任何内容。例如,本节Shell Defined Functions将shell函数的语法定义为 function name [()] compound-command [redirection] 然后(在手册的其他地方)令牌name定义为 name A word consisting only of alphanumeric characters and underscores, and beginning with an alphabetic character or an underscore. Also referred to as an identifier. 没有任何提及函数名的双冒号语法。 到目前为止,我在此《Shell Style Guide》(请参阅小节Naming Conventions > Function Names)中找到了对此双冒号语法的唯一其他参考,该指南建议对“包”中的函数名使用双冒号语法-例如,mypackage::myfunction()。 函数名称的这种双冒号语法是Bash shell的合法功能,还是未公开的功能?如果合法,Bash手册中将其记录在哪里?我已经看了看,但是在手册中找不到任何有关它的信息。我发现最接近的是::在PATH环境变量中使用,将当前工作目录添加到搜索路径。 例 #!/bin/bash function abc::def() { …

1
如何保护bash功能不被覆盖?
在bash外壳中,我们可以f使用 f(){ echo Hello; } 然后使用以下命令重新声明/覆盖它,没有任何错误或警告消息 f(){ echo Bye; } 我相信,有一种方法可以防止功能被这种方式覆盖。

3
为什么sh(不是bash)抱怨.bashrc中定义的函数?
打开终端会话时,我得到了这个: sh:导入“ read.json”的函数定义时出错 sh:导入“ ts-project”的函数定义时出错 sh不喜欢这些功能,因为它们看起来像: read.json(){ :: } 和 ts-project(){ :: } 真正的问题是-为什么要sh触摸/解释这些文件?我在MacOS上,以前曾经看过,这真是个谜。我认为只有bash会加载这些文件。 更新:bash和sh并没有什么不同。当我在终端中输入bash时,得到以下信息: alex$ bash beginning to load .bashrc finished loading .bashrc bash-3.2$ 当我sh在终端输入时,得到以下信息: alex$ sh sh: error importing function definition for `read.json' sh: error importing function definition for `ts-project' sh-3.2$

4
bash函数的隐式返回?
说我有一个bash函数,如下所示: gmx(){ echo "foo"; } 此函数将隐式返回echo命令的退出值,还是使用return是必需的? gmx(){ echo "foo"; return $? } 我假设bash的工作方式是,bash函数的最后一条命令的退出状态是“返回”的状态,但不能100%确定。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.