当前位置: 首页 > 面试题库 >

Bash中有效标识符(例如函数,vars等)的规则是什么?

贾烨
2023-03-14
问题内容

Bash中标识符(特别是函数名和变量名)的语法规则是什么?

我编写了一个Bash脚本,并在Ubuntu,Debian,Red Hat 5和6甚至是旧的Solaris
8盒上的各种版本的Bash上进行了测试。该脚本运行良好,因此已发布。

但是,当用户在SUSE计算机上尝试使用它时,它给出了“无效标识符”错误。幸运的是,我猜测函数名称中包含无效字符是正确的。连字符弄乱了。

至少经过某种程度测试的脚本在另一个Bash或发行版上具有完全不同的行为,这一事实令人不安。如何避免这种情况?


问题答案:

从手册:

   Shell Function Definitions
       ...
       name () compound-command [redirection]
       function name [()] compound-command [redirection]

name 在其他地方定义:

       name   A  word  consisting  only  of alphanumeric characters and under‐
              scores, and beginning with an alphabetic character or an  under‐
              score.  Also referred to as an identifier.

因此,连字符无效。但是,在我的系统上,它们确实可以工作…

$ bash --version
GNU bash, version 4.2.25(1)-release (x86_64-pc-linux-gnu)


 类似资料:
  • 问题内容: 我的一个孩子正在读高中的Java,并在他的一项测试中接受了此测试: 以下哪项是Java中有效的标识符? 一个。 b。 C。 d。 e。 他回答 b 并弄错了。 我看着这个问题,并争辩说这 是 一个有效的标识符,应该是正确的。 我们看了一下Java 规范的标识符,它加强了这一点。我们还编写了一个示例程序,其中包含一个名为的变量以及一个方法。他创建了一个书面反驳,其中包括Java文档参考,

  • 我的一个孩子在高中学习Java,在他的一次考试中有这样的问题: 以下哪一个是Java中的有效标识符? a. b。 C。 D。 e. 他答b,答错了。 我研究了这个问题,认为是一个有效的标识符,它应该是正确的。 是有效的标识符吗?

  • 问题内容: 我使用修改我的代码来。在我的代码中,我有。在PDO中这相当于什么? 问题答案: 好吧,没有! 从技术上讲, 它是存在的,但很少使用,并且不等同于 那就对了! 如果您已经按照准备好的语句记录的方式正确地使用了PDO ,那么它将保护您免受MySQL注入。 # 以下是使用准备好的语句(pdo)进行 安全 数据库查询 的示例 并且,现在假设已建立连接,您可以像这样执行查询。 现在,您可能已经知

  • 问题内容: 我只知道该功能。是否还有其他的功能类似,和? 问题答案: ~ ~ 我不确定是否等效。

  • 问题内容: 在阅读Hibernate文档时,我不断看到对 自然标识符 概念的引用。 这是否仅表示实体因其拥有的数据的性质而具有的ID? 例如,用户名+密码+年龄+某些内容用作复合标识符? 问题答案: 在Hibernate中,自然键通常用于查找。在大多数情况下,您将拥有一个自动生成的代理ID。但是,此ID对于查找而言毫无用处,因为您将始终通过名称,社会保险号或其他来自现实世界的字段进行查询。 在使用

  • 问题内容: 我发现了这个变量声明,我想知道它的目的是什么。它似乎没有初始化任何东西,并且因为它使用空白标识符,所以我想您无法访问它。 问题答案: 这是一个类型满足接口的编译时断言。当类型的方法集是该接口的方法集的超集时,该类型将实现接口。 如果类型不能满足接口要求,则编译将退出,并显示类似以下错误: 运作方式如下。该代码声明了一个类型为的未命名变量。该表达式 将无类型的nil 转换为type的ni