a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 84|回复: 0

[考试辅导] Oracle技术:makeshell函数简介

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
shell函数
6 W6 n- S! ?( g' V5 wshell函数分歧于除“wildcard”函数之外的其它函数。make可以使用它来和外部通信。
" o" w9 D7 K. y8 S* 函数功能:函数“shell”所实现的功能和shell中的引用(``)不异。实现对呼吁的扩展。这就意味着需要一个shell 呼吁作为此函数的参数,函数的返回结不美观是此呼吁在shell中的执行结不美观。make仅仅对它的回返结不美观进行措置;make将函数返回结不美观中的所有换行符(“n”)或者一对“nr”替代为单空格;并去失踪末尾的回车符号(“n”)或者“nr”。进行函数睁开式时,它所挪用的呼吁(它的参数缴获得执行。除对它的引用呈此刻轨则的呼吁行和递归变量的界说中以外,其它决大大都情形下,make是在篡夺解析Makefile时完核对函数shell的睁开。
6 _8 \& R, j6 i4 k, u: l4 Y5 t* 返回值:函数“shell”的参数(一个shell呼吁)在shell情形中的执行结不美观。
" L4 s4 {( r4 z/ y* 函数声名:函数自己的返回值是其参数的执行结不美观,没有进行任何措置。对结不美观的措置是由make进行的。当对函数的引用呈此刻轨则的呼吁行中,呼吁行在执行时函数才被睁开。睁开时函数参数(shell呼吁)的执行是在此吐矣闽shell历程中完成的,是以需要对呈此刻轨则呼吁行的多级“shell”函数引用需要谨严措置,否则会影响效率(每一级的“shell”函数的参数城市有各自的shell历程)。
2 F' X3 \/ Z& p" V5 B* X( _) h示例1:/ P0 K' I6 L- m
contents := $(shell cat foo)) Z! k' t" J$ @
将变量“contents”赋值为文件“foo”的内容,文件中的换行符在变量中使用空格庖代。% D7 A) y6 Y! F  Q
示例2:1 e5 T3 v0 Z. Q
files := $(shell echo *.c)
& P" E9 W! y  k6 S' z2 d将变量“files”赋值为当前目录下所有.c文件的列表(文件名之间使用空格朋分)。在shell中之行的呼吁是“echo *.c”,此呼吁返回当前目录下的所有.c文件列表。上例的执行结不美观和函数“$(wildcard *.c)”的结不美观不异,除非你使用的是一个奇异的shell。$ O  q8 H, X) }
注重:经由过程上边的两个例子我们可以看到,当引用“shell”函数的变量界说使用直接睁开式界说时可以保证函数的睁开是在make读入 Makefile时完成。后续对此变量的引用就不会有睁开过程。这样就可以避免轨则呼吁行中的变量引用在呼吁行执行时睁开的情形发生(因为睁开 “shell”函数需要此外的shell历程完成,影响呼吁的执行效率)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-4 23:34 , Processed in 0.149131 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表