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

Expect调用crypt4gh解密时出现spawn id exp4 not open错误求助

问题原因

你猜的没错,问题确实出在重定向符号和spawn的兼容性上。Expect的spawn命令不会像Bash那样自动解析</>这类重定向符号——它会把这些符号直接当作crypt4gh的命令参数传递,导致解密命令执行失败、进程提前退出,后续的send自然找不到有效的会话,就抛出了spawn id exp4 not open错误。

解决方法

要让重定向正常生效,得把整个解密命令交给Bash来处理,用spawn bash -c包裹完整的命令行即可。修改后的脚本如下:

#!/usr/bin/expect
spawn bash -c "crypt4gh decrypt --sk /home/user/private_key.sec < /home/user/file.txt.c4gh > /home/user/file.txt"
expect "Passphrase for /home/user/private_key.sec: "
send "password\r"
expect eof  # 等待解密命令执行完成再退出脚本
额外说明
  • 用bash -c包裹后,重定向符号会被Bash正确解析,和你在终端直接执行命令的效果完全一致。
  • 加上expect eof是为了让脚本等待解密进程执行完毕再退出,避免进程还在运行时脚本就提前结束。
  • 如果密码输入后还有其他交互提示,可以根据实际输出调整expect的匹配内容。

内容的提问来源于stack exchange,提问作者John Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:29:56