如何处理 Bash 脚本中命令及其输出的意外退出

如何处理 Bash 脚本中命令及其输出的意外退出

我编写了一个单行脚本,用于在鼠标未悬停在特定窗口上时自动隐藏该窗口。它获取鼠标位置和窗口的几何形状及其位置 (topleftx,toplefty),我将其几何形状添加到窗口的起始位置以获取 (bottomrightx,bottomrighty) 坐标,然后比较鼠标是否在窗口上方。如果鼠标不在窗口上,它会隐藏窗口。

它只起作用一次,因为xprop如果在窗口堆栈中找不到窗口名称,我用来在脚本中提取窗口信息的窗口信息命令就会失败。它会输出一条错误消息,--help然后退出。

我需要它,xprop因为它是唯一提供decoration id任何窗口信息的窗口信息命令。因为 Linux 中的主流窗口信息工具只打印窗口的几何形状和位置,而不打印其装饰。为了完整性,我想包括窗口装饰。

我怎样才能诱使它工作呢?

  while [ 1 ]
  do 
         string=$(xdotool getmouselocation 2>/dev/null | sed 's/x:\([0-9]\+\)[ \t]y:\([0-9]\+\)[ \t].*/\1;\2/' | tr ';' ',') 
         string2=$(xdotool getwindowgeometry $(xprop -name "kenn" | grep _COMPIZ_WINDOW_DECOR_INPUT_FRAME |  grep -Po ' # \K.*') | grep -Po ': \K.*' |cut -d" " -f1 | tr '\n' ',' | tr 'x' ','| sed 's/-[0-9][0-9]*/0/') 
         A="$string2$string" 
         IFS=, 
         set $A 
  if [[(($5 -lt $(($1+$3))))  && (($5 -gt $1))]] && [[(($6 -lt $(($2+$4))))  && (( $6 -gt $2 ))]]
         then echo "mouse is on the window"
  else 
         then echo "mouse is out of the window"
  fi 
  done

答案1

你可以尝试

(xprop -name "kenn" 2>/dev/null || echo "") |...

stderr 重定向会消除错误,并且||如果 xprop 失败,则后续部分会启动。

相关内容