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

如何在Bash脚本中模拟回车键完成Expo构建流程?

Expo iOS构建脚本自动选择设备的问题

我的脚本与操作流程

当前使用的脚本:

#!/bin/sh
cd Desktop/work-directory/project-directory/
code .
npx expo run:ios -d
sleep 10
xdotool key Return

日常操作流程:

  • 导航到指定工作目录
  • 打开文本编辑器
  • 执行npx expo run:ios -d命令在本地设备构建应用
  • 命令执行后会弹出「Select a simulator」的选择提示,我始终选择第一个本地设备选项,希望脚本自动完成回车操作,无需手动干预

遇到的问题

尝试过用yes命令自动输入无效,调整sleep时长到30秒以上也没解决,了解过Expect工具但不确定是否有必要使用。想确认:

  • 当前脚本写法是否存在错误?
  • 是否需要替换xdotool工具来和Expo CLI进行交互?

解决方案

1. 当前脚本的核心问题

你的脚本逻辑有问题:npx expo run:ios -d是阻塞式命令,它会一直停在选择提示那里等待用户输入,后面的sleep和xdotool命令要等这条命令执行完成后才会运行——这时候早就过了需要输入的时机,所以不管睡多久都没用。

2. 最可靠的方案:直接指定设备,跳过交互提示

Expo CLI支持直接指定目标设备,完全跳过选择步骤。

先执行以下命令列出所有可用的模拟器/设备:

xcrun simctl list devices

找到你常用设备的名称或者UUID,然后修改脚本里的命令:

# 使用设备名称
npx expo run:ios -d --device "你的设备名称"
# 或者使用UUID
npx expo run:ios -d --device 设备UUID字符串

这样命令会直接指定设备构建,不需要任何交互操作,这是最稳定的解决方式。

3. 若需自动处理交互:用Expect工具

如果不想每次手动指定设备,非要自动选择第一个选项,那必须用Expect——xdotool这类全局模拟键盘的工具,无法精准把输入发送到正在前台运行的Expo CLI交互进程里,所以没用。

写一个Expect脚本(保存为auto-build-ios.exp):

#!/usr/bin/expect -f

# 切换到工作目录
cd Desktop/work-directory/project-directory/
# 打开编辑器
spawn code .
# 启动Expo构建命令
spawn npx expo run:ios -d
# 等待选择提示出现
expect "Select a simulator"
# 发送回车选择第一个选项
send "\r"
# 保持交互,让命令继续执行
interact

给脚本添加执行权限:

chmod +x auto-build-ios.exp

运行这个脚本就能自动完成选择操作。

为什么yes命令无效?

yes命令默认持续输出y字符,但Expo的选择提示需要的是回车(\r),而且Expo的交互提示是直接和终端会话交互,不是从标准输入读取内容,所以用yes | npx expo run:ios -d这种管道方式根本无法传递输入,自然无效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:45:31