You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Calc文档的Basic宏中调用Bash脚本

问题解决:LibreOffice Calc宏调用带空格参数的Bash脚本

核心问题分析

你代码里有两个关键错误:

  • LibreOffice Basic中引用变量不需要加#,#str1是语法错误,应该直接写str1
  • 使用RunApplication("Shell")传递带空格的参数时,直接拼接带单引号的字符串容易出问题,ScriptForge的RunApplication对Shell命令的参数传递有更规范的写法

正确写法示例

方法1:拆分命令与参数(推荐)

RunApplication在Shell模式下,第二个参数是命令路径,后续参数依次是脚本的参数,这样不需要手动处理引号转义:

GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
Dim session As Variant
Dim str1 As String
session = CreateScriptService("Session")
str1 = "ici plusieurs mots"
' 命令路径作为第二个参数,脚本参数作为第三个参数
session.RunApplication("Shell", "/usr/local/bin/essai-macro-bavard.sh", str1)

方法2:正确拼接命令字符串

如果一定要用单字符串传递完整命令,需要确保参数的引号正确包裹,同时修正变量引用错误:

GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
Dim session As Variant
Dim str1 As String
session = CreateScriptService("Session")
str1 = "ici plusieurs mots"
' 去掉#,用双引号包裹整个命令,参数用单引号
session.RunApplication("Shell", """/usr/local/bin/essai-macro-bavard.sh '" & str1 & "'""")

额外检查项

  • 确保脚本有可执行权限:在终端执行chmod +x /usr/local/bin/essai-macro-bavard.sh
  • 如果脚本放在$PATH路径下,直接用脚本名也可以,比如session.RunApplication("Shell", "essai-macro-bavard.sh", str1)

内容的提问来源于stack exchange,提问作者Denis M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 23:17:36