发出shell代码以在中开始创建子shell脚本文件,包括更改文件可执行。此宏用从父脚本学到的信息填充子脚本(因此,发出的代码实际上是等效的,但效率更高,而不是由输出的代码AS_INIT系统
,AS_BOURNE_兼容
、和AS_外壳_清洁
). 如果存在,评论输出靠近子级的开头,在shell初始化代码之前,为受参数扩展、命令替换和反斜杠影响报价单删除。这个父脚本应该检查此宏之后的退出状态,以防文件无法正确创建(例如,如果磁盘完全)。如果成功创建,则父脚本可以继续将额外的M4sh构造附加到子脚本中。
请注意,子脚本启动时没有打开日志文件,因此如果父脚本使用日志记录(请参阅AS_消息_LOG_FD),你必须暂时禁用任何使用日志文件的尝试,直到发出代码以打开子级中的日志。另一方面,如果父脚本具有AS_消息_FD
重定向到其他地方‘1',则子脚本已经具有将stdout复制到的代码那个描述符。目前,建议从另一个脚本中编写M4sh shell脚本的习惯用法是:
AS_INIT_生成([文件],[[#我的子脚本。]])||{AS_ECHO([“创建子脚本失败”]);AS_EXIT;}m4_pushdef([AS_MESSAGE_LOG_FD])dnl猫>>“文件“<<\__EOF__#初始化AS_MESSAGE_LOG_FD的代码m4_popdef([AS_MESSAGE_LOG_FD])dnl#附加代码__电动势__
然而,随着M4sh接口的出现,这在未来可能会发生变化进一步稳定。
此外,请注意使用LINENO公司
在子脚本中可以报告相对于其父脚本中位置的行号,即使在使用时AS_LINENO_准备
,如果父脚本是无法找到正在工作的外壳LINENO公司
支持。