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