Skip to content

执 ​

执行系统命令(shell 命令行),返回结果(输出或错误)。

「命令」指你在终端里敲的那种命令行,由系统的命令解释器(shell)执行:

  • Linux / macOS:交给 /bin/sh(等价于 sh -c "命令")
  • Windows:写入临时批处理文件再交给 cmd 执行
xuantie
设 r = 执("dir")              // Windows
设 r = 执("ls -l")            // Linux/macOS
若 r.成功 { 示(r.值) }

你可以…… ​

  • 取命令输出——值 是完整输出文本:
xuantie
设 r = 执("cd")               // Windows:显示当前目录
设 r = 执("pwd")              // Linux/macOS:显示当前目录
设 目录 = r.值.替换("\r", "").替换("\n", "")
  • 失败处理——非零退出码即失败,原因在 错误:
xuantie
设 r = 执(clang指令)
若 非 r.成功 { 示("编译失败: " & r.错误) }
  • 管道与重定向——命令字符串按 shell 语法解析,管道、重定向都可用:
xuantie
设 r = 执("cmd /c dir")                  // Windows:经 cmd 批处理执行
设 r = 执("ls -l | grep 玄铁")            // Linux/macOS:ls 的输出转交给 grep

注意 ​

  • 这是 shell 命令,不是文件路径:命令字符串会先被 shell 解析——$(变量)、`(先执行里面的命令)、;(接着执行下一条)、|(管道)、*(通配)、& 等字符有特殊含义,不是字面量。
  • 不要让用户输入直接拼进命令字符串:用户填的内容会被 shell 当成命令的一部分执行(例如填 报告.txt; 删除全部,shell 看到 ; 会真的执行「删除全部」)。这称为命令注入——先校验或转义再拼接。
  • 同步阻塞:命令跑完才返回,长命令会卡住当前线程。
  • stderr 已并入输出(内部 2>&1),命令的报错信息也在 值 里。
  • 失败只看退出码:命令输出了错误文本但退出码为 0,仍判成功。
  • 跨平台差异:Windows 下命令经 cmd 批处理执行,%、^、& 会被 cmd 二次解释;含中文路径/参数的指令建议先切 UTF-8 代码页(chcp 65001)。示例中带 cmd /c 的写法是 Windows 专用,Linux/macOS 没有 cmd。

相关 ​

输 · 示 · 若

基于 VitePress 静态构建 · 文档内容与仓库 GUIDE/ 同源

玄铁玄铁 XUANTIE · 中文系统级编程语言MARK 玄·折 120×120 · STROKE 8 · NO CURVES