首页 > lang > shell 
 en fr de es it nl pl pt pt_BR mk sq ca hu cs tr ar fa id vi ko ja ru zh_TW eo
前一个  下一个  编辑  重命名  撤销  刷新  搜索  管理  
文档
历史
 
警告! 该页面尚未更新。  参见英文版 
SHELL
[ Process = ] SHELL Command [ WAIT ] [ FOR { { READ | INPUT } | { WRITE | OUTPUT } } ] [ AS Name ]
SHELL Command TO Variable

执行一条命令行,创建一个内部Process对象来管理命令行。

命令行包含在一个字符串中被传递给系统命令行解释器(/bin/sh)。

如果使用INPUTOUTPUT关键字替换READWRITE,进程被执行在虚拟终端中。 这意味着进程认为自己运行在真正的终端中。

NameProcess对象使用的事件名。缺省是“Process”。

用赋值语句可以创建一个对内部Process对象的引用。

如果使用第二种语法执行命令行,解释器等待其结束,并且完整的命令行输出会保存在指定的字符串中。

Example

' 获取目录的内容

SHELL "ls -la /tmp" WAIT

' 在后台完成同样的工作

DIM Content AS String

SHELL "ls -la /tmp" FOR READ

...

PUBLIC SUB Process_Read()

  DIM sLine AS String

  READ #LAST, sLine, -256

  Content = Content & sLine
  PRINT sLine;

END

使用Lof函数可以获知在Process_Read事件处理中能读取多少字节。

作为发送给命令行解释器的参数,不得不引证它们,就像在命令行上直接键入一样。

SHELL "perl -e 'print while <>;'" FOR READ WRITE

或者可以使用Quote.Shell方法来创建一个命令行解释器不进行修改的引证字符串。

与VB的Shell命令的返回进程ID和依赖程序员使用API调用来控制进程不同,GambasShell函数选择返回一个能直接杀死产生的进程或者进行其它控制的Process对象(如果被赋值给声明为Process类型的变量)。另外与VB形成对照的是进程可以同步或者异步运行。

参见

进程管理, Process, Lof, Quote.Shell