echo $(df -h)|awk 'BEGIN{FS=" "}''{i=1; while(i<=NF) {print $i;i++}}' 这段代码为什么不能按照正常df -h显示
时间: 2024-04-28 12:25:44 浏览: 134
这段代码是将 df -h 命令的输出结果通过管道符传递给 awk 命令进行处理,其中 BEGIN{FS=" "} 表示在处理之前将 awk 的分隔符设置为空格。接着,i=1 表示将变量 i 的初始值设置为 1,while 循环中的语句则表示在 i 不大于 NF(即 awk 处理的行的字段数)的情况下,输出第 i 个字段并将 i 的值加 1。因此,这段代码会将 df -h 命令的输出结果中的每个字段单独输出,而不是按照正常的 df -h 显示方式进行显示。
相关问题
getevent -q "$DEVICE_FILE" | while read line; do local keycode=$(echo "$line" | awk '{print $2}') local value=$(echo "$line" | awk '{print $3}') 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"| awk '{print $NF}') if [ "$keycode" = "$KEY_VALUE" ]; then if [ "$value" = "00000001" ]; then key_state fi elif [ "$keycode" = "$KEY_VALUE2" ]; then if [ "$value" = "00000001" ]; then if [ "$activity" = "$(echo $id_activity | awk '{print $2}')" ] then echo "$(echo $id_activity | awk '{print $4}')" am start -n "$(echo $id_activity | awk '{print $4}')" --display "$(echo $id_activity | awk '{print $3}')" else echo "$(echo $id_activity | awk '{print $2}')" am start -n "$(echo $id_activity | awk '{print $2}')" --display "$(echo $id_activity | awk '{print $1}')" fi fi fi done
这是一段 Shell 脚本,可以监听 Android 设备上的按键事件并根据按键事件启动不同的应用程序。具体来说,它使用 getevent 命令来监听按键事件,使用 dumpsys 命令来获取当前活动的窗口和焦点,并根据按键事件和当前窗口信息来启动不同的应用程序。其中,KEY_VALUE 和 KEY_VALUE2 分别代表两个按键的键值,可以根据实际需要进行修改。
#! /system/bin/sh # 监听按键的设备文件和按键值 DEVICE_FILE="/dev/input/event0" KEY_VALUE="00a5" KEY_VALUE2="00a3" 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}') # 按键副屏打开 function key_state() { if [ "$id1" -gt "$id2" ]; then echo $id1 am start -n com.tencent.start.tv/com.tencent.start.ui.SplashActivity --display "$id1" else echo $id2 am start -n com.tencent.start.tv/com.tencent.start.ui.SplashActivity --display "$id2" fi } # 监听按键事件 function listen_key_events() { # 判断设备文件是否存在 if [ ! -e "$DEVICE_FILE" ]; then echo "Error: Device file '$DEVICE_FILE' does not exist." exit 1 fi # 监听按键事件 getevent -q "$DEVICE_FILE" | while read line; do local keycode=$(echo "$line" | awk '{print $2}') local value=$(echo "$line" | awk '{print $3}') 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"| awk '{print $NF}') if [ "$keycode" = "$KEY_VALUE" ]; then if [ "$value" = "00000001" ]; then key_state fi elif [ "$keycode" = "$KEY_VALUE2" ]; then if [ "$value" = "00000001" ]; then if [ "$activity" = "$(echo $id_activity | awk '{print $2}')" ] then echo "$(echo $id_activity | awk '{print $4}')" am start -n "$(echo $id_activity | awk '{print $4}')" --display "$(echo $id_activity | awk '{print $3}')" else echo "$(echo $id_activity | awk '{print $2}')" am start -n "$(echo $id_activity | awk '{print $2}')" --display "$(echo $id_activity | awk '{print $1}')" fi fi fi done } # 启动按键监听 listen_key_events
这是一个 shell 脚本,用于监听按键事件,当检测到特定按键按下时,会打开指定应用。其中,变量 DEVICE_FILE 指定了监听的设备文件,KEY_VALUE 和 KEY_VALUE2 分别表示要监听的两个按键的值。函数 key_state 用于打开指定应用,函数 listen_key_events 中使用 getevent 命令监听设备文件中的按键事件,并根据按键值和状态判断是否打开指定应用。脚本中还使用了 dumpsys、am 等命令来获取当前窗口信息和启动应用。
阅读全文