Похоже на ошибку в bash. Он воспроизводится на моей Ubuntu GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
.
suspend
, так как встречается и после kill -STOP bash_pid
. kill -9 %1
вместо kill %1
. kill pid
вместо kill %1
. bash
(try dash
илиsleep 999
). В этом случае, однако, поведение bash все еще неожиданно для меня --bash не должен SIGCONT sleep 999
в этом случае, но, по-видимому, это так. dash
выполнение подпроцесса dash
), и они убивают более ожидаемым образом. Наш остановленный -и -убитый подпроцесс остается остановленным (, ps uw
постоянно показывает подпроцесс в состоянииT
). После того, как вы разбудите подпроцесс с помощью SIGCONT, он обрабатывает SIGTERM и умирает, не затрагивая своего родителя. Если решение на основе цикла -приемлемо, вы можете
declare -A wp
while IFS='=' read -r name value; do
wp+=([$name]=$value)
done < <(xdotool getactivewindow getwindowgeometry --shell)
Пр.
$ declare -A wp
$ while IFS='=' read -r name value; do
wp+=([$name]=$value)
done < <(xdotool getactivewindow getwindowgeometry --shell)
$ for name in "${!wp[@]}"; do
printf 'Value of %s is %s\n' "$name" "${wp[$name]}"
done
Value of WINDOW is 81788935
Value of WIDTH is 1440
Value of SCREEN is 0
Value of X is 0
Value of HEIGHT is 866
Value of Y is 34