./setdisplay.sh[12]: syntax error: unexpected 'els 会报这个
时间: 2024-03-02 07:51:23 浏览: 100
出现这个错误的原因是第 7 行的语法有误。具体来说,`else` 与前面的语句之间需要有一个空格,即应该写成 `else `(后面有一个空格)。修改后的脚本如下:
```
#!/system/bin/sh
local id_activity=$(dumpsys window | grep display | grep 'imeInputTarget' | awk '{print $4,$7}' | cut -d'}' -f1)
local focus=$(dumpsys window | grep "mCurrentFocus" | tail -n 1 | awk '{print $NF}' | cut -d'}' -f1)
local activity=$(echo "$id_activity" | grep "$focus")
if [ "$activity" = "$id_activity | awk '{print $2}'" ]
then
am start -n $id_activity | awk '{print $4}' --display $id_activity | awk '{print $3}'
else
am start -n $id_activity | awk '{print $2}' --display $id_activity | awk '{print $1}'
fi
```
请注意,这段脚本仍然需要在 Android 系统中运行。如果您想在其他系统中运行,请修改脚本中的命令以适应您的系统。
相关问题
./setdisplay.sh imeInputTarget in display# 0 Window{fc89d96 u0 com.ktcp.video/com.ktcp.video.activity.detail.DetailCoverActivity} 该窗口不在 display#0 或 display#2 上 rk3588_s:/vendor/bin # ./setdisplay.sh imeInputTarget 该窗口不在 display#0 或 display#2 上
这个问题可能是因为当前焦点所在的窗口不在 `display#0` 或 `display#2` 上,导致无法找到对应的显示器 ID。
可以尝试使用以下命令来获取当前所有显示器的 ID:
```
dumpsys window displays | grep 'id=' | awk -F ' = ' '{print $2}'
```
然后再根据具体情况调整 `setdisplay.sh` 脚本中的显示器 ID,确保将输入法窗口移动到正确的显示器上。
另外,也可以在 `setdisplay.sh` 脚本中添加一些错误处理机制,例如在找不到对应显示器 ID 的情况下给出提示信息,或者在移动窗口失败时给出错误提示等。
rk3588_s:/ # ls ./vendor/bin/setdisplay.sh -l -rwxr-xr-x 1 root shell 414 2023-06-02 13:05 ./vendor/bin/setdisplay.sh
根据您提供的信息,该脚本已经具有执行权限,因此原因不在于权限问题。您可以尝试手动执行脚本中的 `get_display_id` 函数,看看能否得到正确的输出。例如,可以在终端中输入以下命令:
```
dumpsys window | grep "mCurrentFocus" | tail -n 1 | awk '{print $NF}' | cut -d'}' -f1
```
该命令会输出当前活跃窗口的信息,如果能够正确输出,则说明 `get_display_id` 函数实现正确,问题可能出在其他地方。
阅读全文