#!/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}'"] am start -n $id_activity | awk '{print $3}' --display $id_activity | awk '{print $4}' fi 优化一下
时间: 2024-03-02 20:50:55 浏览: 166
Linux系统优化脚本.sh
这段代码看起来像是一个 Android 系统的 shell 脚本,主要作用是获取当前输入法和应用的焦点,并在需要时打开输入法。
首先,需要在 `if` 的前面加一个空格,否则会报错。然后,可以将 `grep` 和 `awk` 命令合并,避免使用管道符 `|`。另外,可以将 `awk` 命令中的 `'{print $2}'` 和 `'{print $3}'` 合并为一个,这样可以避免使用多个管道符,提高效率。最后,建议在 `am start` 命令中加上参数 `-W`,可以等待应用启动完成后再返回。
优化后的代码如下:
```
#!/system/bin/sh
local id_activity=$(dumpsys window | awk '/display/ && /imeInputTarget/ {print $4,$7}' | cut -d'}' -f1)
local focus=$(dumpsys window | awk '/mCurrentFocus/ {print $NF}' | cut -d'}' -f1)
local activity=$(echo "$id_activity" | awk -v focus="$focus" '$0 ~ focus {print $2}')
if [ "$activity" = "$(echo "$id_activity" | awk '{print $2,$3,$4}')" ]; then
am start -n $activity --display $(echo "$id_activity" | awk '{print $4}') -W
fi
```
阅读全文