如果函数的名称是表达式的第一个单词,是否只能调用函数,就像别名一样?
或者它也可以是表达式的第 n 个单词?
我无法模拟回答我这个问题的用例。
我找不到能回答我这个问题的指南。
作为意大利人,我发现很难在谷歌搜索引擎上找到合适的词。
您还可以在答案中提及来源吗?
谢谢你。
更新:
5 个答案(包括 1 个已删除和 2 个未回答)尽管该问题收到了 2 个不合理的反对票。一个简单易懂、完整且不需要细节的问题,无论如何插入只会混淆概念。尽管我对用户的反应和不友好的评论不满意,但@muru 的答案是最正确的。显然事情在 for 循环中发生了变化,但这是暗示的,我也使用 bash 多年了。
您的链接回答了我的问题:Function Definition Command,其中有一点说:
“
只要将函数名称指定为简单命令的名称,就应执行复合命令。
命令的操作数在复合命令执行过程中临时成为位置参数;特殊参数“#”也应更改以反映操作数的数量。特殊参数 0 应保持不变。当函数完成时,位置参数和特殊参数'#'的值应恢复为函数执行前的值。如果在复合命令中执行了特殊的内置返回(参见 return),则函数完成并在函数调用后的下一个命令继续执行。
“
谢谢@muru。
请参阅Shell 命令的 POSIX 规范:
在2.9.1 Simple Commands中,强调我的:
最后一点几乎是唯一指定函数执行的地方。其他一切本质上都是如此。所以,是的,函数名必须是第一个字段(在执行了各种扩展之后)。
是的,只能通过将函数名称作为表达式的第一个单词来调用函数。以下单词是函数的参数。bash 中的函数与任何其他命令或别名的工作方式相同。函数名不能是表达式的第 n 个单词。
我明白你在说什么,因为我的语言也不是英语。(在我的语言中,我们也可以通过改变语调和添加问号将陈述变成问题,但在英语中,我们奇怪地需要重新排列单词才能将其变成问题??)
别名仅在命令的第一个单词上扩展,而不在命令的参数中。
阅读
man bash
。以上是你要的吗?
这不是
bash
工作原理,并且会使其无法使用。使用
bash
$()
构造。