我想得到输出
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 等操作。
这两者看起来都很奇怪。有没有更好的办法?有什么方法可以一举完成吗?
答案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