我需要某种类似于Bash函数但不是函数的数据结构。一种按上下文组织命令的命名结构,该结构还应允许前导制表符。
当您的文件具有20个Bash函数但不需要20行函数调用时,这很好。
重击功能:
x() {
echo "x"
}
x
我寻求的数据结构:
context {
echo "x"
}
我在此类数据单元中组织命令的方式与在不使用参数括号()
和不进行函数调用的情况下进行组织的方式类似。
这种结构的名称是什么,您将如何做?
与函数一样,结构的名称应始终位于同一行之前。
这里的文档不是解决方案,在这种情况下,我希望通过语法实现一些最小化。
这称为复合命令,语法为
{ compound-list; }
(这是复合命令的示例,诸如for
循环等其他内容也是复合命令)
例如:
{
echo 'hello'
echo 'world'
}
的;
,如果有在决赛前不换行只需要}
:
{ echo 'hello'; echo 'world'; }
就像功能一样,{ ...; }
构造中的命令在当前环境中执行。
POSIX标准的复合命令描述中提供了有关此问题的更多信息。
没有理由(或可能性)将这些部分命名为,无论如何命名该部分或多或少都等同于创建shell函数。此外,仅在以后要引用复合命令时才需要对复合命令进行命名,这就是函数的用途。
显然可以使用以下注释:
# my hello world thing
{
echo 'hello'; echo 'world'
}
以类似的方式,子外壳可以与
(
echo 'hello'
echo 'world'
)
这在当前shell的子环境中执行,并且对变量等的更改将不会反映在当前shell中。
通用语法是
( compound-list )
在这里,没有必要作最后;
前)
。
出于好奇,shell函数可以(...)
代替{...;}
在本地环境中执行其代码:
helloworld () (
echo 'hello'
echo 'world'
)
这对于了解是否sh
使用不支持局部变量(local
或typeset
in bash
)并且不需要修改脚本环境的语言编写函数可能很有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句