首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关联数组不提供任何输出

关联数组不提供任何输出
EN

Stack Overflow用户
提问于 2020-12-27 03:53:28
回答 2查看 51关注 0票数 0

当我在笔记本电脑上使用不同的外部显示器设置时,我曾尝试使用一个脚本来设置我的显示分辨率。我想也是为了学习bash。

现在,我有了一个关联数组,所有监视器都配置为key,预期分辨率为value。

代码语言:javascript
复制
declare -A known_monitor
known_monitor[Virtual1]=1920x1200
known_monitor[Virtual2]=1400x1050
Known_monitor[eDP-1]=2560x1440

当我尝试像这样访问监视器时:

代码语言:javascript
复制
  for monitor in "${monitors[@]}"
  do
    echo ------------------
    echo $monitor
    echo ${known_monitor[$monitor]}
    echo ------------------
  done

我看到了$monitor值,但是"known_monitor“是空的。

代码语言:javascript
复制
------------------
eDP-1

------------------

我试过移动单行句和添加引号,但似乎都不起作用。

任何建议都将是有帮助的,提前谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-12-27 04:20:27

更正了脚本中的一些错误,它就可以工作了:

代码语言:javascript
复制
#!/usr/bin/env bash

declare -A known_monitor
known_monitor[Virtual1]=1920x1200
known_monitor[Virtual2]=1400x1050
known_monitor[eDP-1]=2560x1440

for monitor in "${!known_monitor[@]}"
do
  echo ------------------
  echo "$monitor"
  echo "${known_monitor[$monitor]}"
  echo ------------------
done

known_monitor关联数组的替代声明:

代码语言:javascript
复制
declare -A known_monitor=(
  [Virtual1]=1920x1200
  [Virtual2]=1400x1050
  [eDP-1]=2560x1440
)

你的初始脚本出了什么问题:

  • Problem1:

带有大写K的shell引用不同的变量名,因为在shell中,变量名区分大小写。此数组未声明为将迭代monitors数组的值的关联array.

  • Problem2:
  1. for monitor in "${monitors[@]}"。但是在脚本中,您并没有定义和填充这个monitors数组。你有一个名为known_monitor.
  2. When的关联数组,你迭代数组的值,你不能通过它的值来索引这个数组。您需要通过在数组名称前加上惊叹号!来迭代数组的索引或键。像这样:for monitor in "${!monitors[@]}"
票数 3
EN

Stack Overflow用户

发布于 2020-12-27 04:07:53

你的上一个known_monitor使用了大写密钥,它不应该是:

代码语言:javascript
复制
declare -A known_monitor
known_monitor[Virtual1]=1920x1200
known_monitor[Virtual2]=1400x1050
known_monitor[eDP-1]=2560x1440

monitors=(Virtual1 Virtual2 eDP-1)

for monitor in "${monitors[@]}"
  do
    echo ------------------
    echo $monitor
    echo ${known_monitor[$monitor]}
    echo ------------------
  done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65460133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档