COMMAND
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgCommand
- 最后更新: 2023-09-07
返回调用程序时使用的命令行参数
语法
declare function Command ( byval index as long = -1 ) as string用法
result = Command[$]( [ index ] )参数
index
特定命令行参数的从零开始的索引。
返回值
返回命令行参数(一个或多个)。
说明
Command 返回程序执行时传入的命令行参数。
若 index 小于零(< 0),则返回所有命令行参数的空格分隔列表;否则返回单个参数。值为零(0)时返回可执行文件名;值为一(1)及以上时分别返回各命令行参数。
若 index 大于传入参数的数量,则返回空字符串("")。
解析命令行参数时,参数列表中双引号内的内容被视为单个块,返回时不含双引号。
默认情况下,FreeBASIC 所有平台均启用参数的文件名通配符展开(将通配符扩展为文件名)以保持兼容性。命令行中含通配符的参数在无匹配文件或正确引用时通常不会展开。重定向等特殊字符通常也不会被返回,除非正确引用。具体引用方式请参阅所用 shell 的文档。
在命令行参数中使用反斜杠时可能存在一些奇怪的行为,结果甚至可能因平台而异。
- 警告:由于 FreeBASIC 中构造函数优先级和 main() 初始化的特性,在全局构造函数(模块构造函数或静态/共享对象调用的 UDT 构造函数)中调用
Command是不安全的(甚至可能引发运行时错误)。
在 Windows 下禁用文件名通配符展开
在源码中某处定义以下全局变量:
vb
'' For MinGW.org and Cygwin runtimes:
Extern _CRT_glob Alias "_CRT_glob" As Long
Dim Shared _CRT_glob As Long = 0
'' For MinGW-w64 runtime:
Extern _dowildcard Alias "_dowildcard" As Long
Dim Shared _dowildcard As Long = 0在 DOS 下禁用文件名通配符展开
在源码中某处定义以下函数:
vb
Function __crt0_glob_function Alias "__crt0_glob_function" ( ByVal arg As UByte Ptr ) As UByte Ptr Ptr
Return 0
End Function在 Linux 下禁用文件名通配符展开
文件名通配符展开由命令 shell 处理。可对含通配符的参数加引号,或在执行命令前在 shell 中禁用通配符展开。例如,在 bash 中使用 set -f 可禁用通配符展开。
示例
vb
Print "program launched via: " & Command(0)
Dim As Long i = 1
Do
Dim As String arg = Command(i)
If Len(arg) = 0 Then
Exit Do
End If
Print "command line argument " & i & " = """ & arg & """"
i += 1
Loop
If i = 1 Then
Print "(no command line arguments)"
End If
Sleep方言差异
- 在 -lang qb 方言中,字符串类型后缀 "$" 是必须的。
- 在 -lang fblite 方言中,字符串类型后缀 "$" 是可选的。
- 在 -lang fb 方言中,字符串类型后缀 "$" 被忽略,仅在使用 -w suffix 或 -w pedantic 编译选项时发出警告。
与 QB 的差异
- QB 不支持数字参数。
- QB 在返回参数列表前将其转换为大写,FreeBASIC 不进行此转换。
- 默认情况下,含通配符的参数会被展开(文件名通配符展开)。
另请参阅
__FB_ARGC____FB_ARGV__ExecRun
返回 目录