DISPLAY_ID=$(dumpsys window | awk '/displayId=/ {print $1}' | sed 's/displayId=//g') local dis=$(echo $DISPLAY_ID | awk '{print $2}') echo $dis
时间: 2024-04-27 22:24:11 浏览: 10
这段代码的作用是获取当前设备的显示屏ID,并将其赋值给变量DISPLAY_ID,然后提取其中的数字部分赋值给变量dis,并输出dis的值。其中,首先使用dumpsys命令获取当前窗口的信息,然后通过awk和sed命令提取其中的displayId值,最后赋值给DISPLAY_ID。接着,使用awk命令提取DISPLAY_ID中的数字部分,赋值给dis,最终输出dis的值。
相关问题
DISPLAY_ID=$(dumpsys window | awk '/displayId=/ {print $1}' | sed 's/displayId=//g') local id1=$(echo $DISPLAY_ID | awk '{print $1}') local id2=$(echo $DISPLAY_ID | awk '{print $2}') echo $id1 echo $id2 if [ "$id1" > "$id2" ]; then echo $id1 fi 优化一下
这段代码的作用是获取当前设备的显示屏ID,并将其赋值给变量DISPLAY_ID。然后,使用echo和awk命令将DISPLAY_ID中的第一个和第二个ID分别赋值给变量id1和id2。接着,使用if语句判断id1是否大于id2,如果是,则输出id1。
下面是这段代码的优化版本:
```
ids=($(dumpsys window | awk '/displayId=/ {print $1}' | sed 's/displayId=//g'))
max_id=${ids[0]}
for id in "${ids[@]}"; do
if [ "$id" -gt "$max_id" ]; then
max_id=$id
fi
done
if [ "$max_id" == "2" ]; then
echo "选择大的"
fi
```
这个优化版本中,首先使用dumpsys、awk和sed命令获取当前设备的所有显示屏ID,并将其存储到数组ids中。然后,使用for循环遍历ids数组,并使用if语句判断当前ID是否比之前的max_id大,如果是,则更新max_id的值。最后,使用if语句判断max_id是否为2,如果是,则输出“选择大的”。
dumpsys window | awk '/displayId=/ {print $1}' | sed 's/displayId=//g' 2 0
看起来当前的屏幕 ID 是 2,而非 0。因此,你需要更新脚本来反转屏幕的选择。以下是更新后的 shell 脚本:
```sh
#!/system/bin/sh
# 获取当前显示器 ID
DISPLAY_ID=$(dumpsys window | awk '/displayId=/ {print $1}' | sed 's/displayId=//g')
# 判断当前显示器是否为主屏幕
if [ "$DISPLAY_ID" = "0" ]; then
# 当前为主屏幕,切换到副屏幕
settings put global device_provisioned 1
settings put secure user_setup_complete 1
settings put global sysui_multi_window_display 2
else
# 当前为副屏幕,切换到主屏幕
settings put global device_provisioned 1
settings put secure user_setup_complete 1
settings put global sysui_multi_window_display 0
fi
```
现在,如果当前屏幕 ID 是 2,脚本会将屏幕切换为主屏幕,而不是副屏幕。希望这次的更新能够解决你的问题。