Разбор "дружественного к оболочке" вывода

Похоже на ошибку в 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 и умирает, не затрагивая своего родителя.
2
12.10.2019, 20:50
1 ответ

Если решение на основе цикла -приемлемо, вы можете

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
2
27.01.2020, 22:16

Теги

Похожие вопросы