Bash 使用内部的另一个变量获取变量内容

Bash 使用内部的另一个变量获取变量内容,bash,Bash,请看下面的代码,我需要第三行,因为我声明了几个输入${k},并用很多值填充它们(所以我在k上迭代)。我在这里隔离了1个变量,并仅用“1”填充它,从而简化了操作。我唯一的问题是node.py行没有接收到输入内容_1_128(这里,用户输入是使用首先模拟原始问题的两个答案(间接和nameref),我建议您改为(数组): 语法为${!…}的间接访问: 名称参考: 关联数组: 使用Bash处理数组!(另请参阅。)大多数人的系统上没有命令input\u 1\u 128。符号$(input\k}\u 128

请看下面的代码,我需要第三行,因为我声明了几个输入${k},并用很多值填充它们(所以我在k上迭代)。我在这里隔离了1个变量,并仅用“1”填充它,从而简化了操作。我唯一的问题是node.py行没有接收到输入内容_1_128(这里,用户输入是使用首先模拟原始问题的两个答案(间接和nameref),我建议您改为(数组):

  • 语法为${!…}的间接访问:
  • 名称参考:
  • 关联数组:

  • 使用Bash处理数组!(另请参阅。)大多数人的系统上没有命令
    input\u 1\u 128
    。符号
    $(input\k}\u 128)
    执行该名称的命令并捕获标准输出。此外,
    echo$(input\u 1\u 128)
    的输出不太可能显示正确的输出-使用
    echo${input_1_128}
    可能会。在shell脚本中使用空格、引号和方括号时要非常小心。@JonathanLeffler在4年的CS研究中,这是我第一次听说Bash数组lol。非常感谢!但是input_1_128不是命令,它是变量。很抱歉,如果不清楚或者我没有领会你的意思,那么现在是你阅读-top t的时候了o bottom。好吧,你可以跳过从第7章开始的章节和附录,但是如果你不知道第1章到第6章中的内容,你就不能充分利用Bash。如果没有其他内容,你需要知道小节标题中的内容。我知道你认为
    input\u 1\u 128
    是一个变量。但是你使用了错误的括号来表达被视为一个变量。你有
    $(input\u 1\u 128)
    ;你需要
    ${input\u 1\u 128}
    。区别是至关重要的!
    declare input_2_128='' 
    k=1
    declare input_${k}_128+='1'
    python3 node.py <<< $(input_${k}_128)
    
    echo $(input_1_128)
    
    $ k=1
    $ declare input_${k}_128=1
    
    $ v=input_${k}_128
    $ echo ${!v}
    1
    
    $ declare input_${k}_128=$((${!v} + 1))
    $ echo ${!v}
    2
    
    $ k=1
    $ declare input_${k}_128=1
    
    $ declare -n v=input_${k}_128
    $ echo $v
    1
    
    $ v=$(($v + 1)); echo $v; echo $input_1_128
    2
    2
    
    $ declare -A a
    $ a[input_${k}_128]=1
    $ echo ${a[input_${k}_128]}
    1
    
    $ a[input_${k}_128]+=1
    $ echo ${a[input_${k}_128]}
    11
    
    $ # if you mark the variable an integer you can use += 1
    $ declare -i a[input_${k}_128]
    $ a[input_${k}_128]+=1
    $ echo ${a[input_${k}_128]}
    12