出力を得たいです。
xdotool getactivewindow getwindowgeometry --shell
Bashのローカル変数。
私は次のようにできると思います。
declare -A wp=( $(xdotool getactivewindow getwindowgeometry --shell | \
sed 's/\(^[^=]*\)/[\1]/') )
# sub gives:
# [WINDOW]=48926121
# [X]=366
# [Y]=96
# [WIDTH]=819
# [HEIGHT]=1022
# [SCREEN]=0
しかし、これは失敗しました。
連想配列を割り当てるときは、添字を使用する必要があります。
別のアプローチは、すべての既知の出力と使用値をローカルに宣言することですeval
。より安全なアプローチは、各値に対してgrep、sedなどを6回実行することです。
どちらも奇妙に見えますね。もっと良い方法がありますか?一度にできる方法はありませんか?
ベストアンサー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