【发布时间】:2021-03-15 03:46:26
【问题描述】:
请看下面的代码,我的想法是我需要第三行,因为我声明了几个 input_${k} 并用很多值填充它们(所以我迭代了 k)。我通过在此处隔离 1 个变量并仅用“1”填充它来为您保持简单。我唯一的问题是 node.py 行没有收到 input_1_128 的内容(这里使用
declare input_2_128=''
k=1
declare input_${k}_128+='1'
python3 node.py <<< $(input_${k}_128)
请注意,如果我写了
echo $(input_1_128)
它将显示正确的值 (1),但我必须使用第一个版本(使用 $k)。 如果此处相关,我键入“bash myscript.sh”来运行脚本。 我感谢大家的帮助。 当然,请不要犹豫,询问更多详情
【问题讨论】:
-
使用 Bash array 来处理数组! (另见Shell parameter expansion。)
-
大多数人的系统上都没有命令
input_1_128。符号$(input_${k}_128)执行该名称的命令并捕获标准输出。此外,echo $(input_1_128)的输出不太可能显示正确的输出 - 使用echo ${input_1_128}可能会。小心使用 shell 脚本中的空格、引号和括号。 -
@JonathanLeffler 在 4 年的 CS 研究中,这是我第一次听说 Bash 数组,哈哈。非常感谢!但是 input_1_128 不是命令,它是一个变量。抱歉,如果不清楚或者我错过了你的观点
-
那么是时候阅读manual——从上到下。好吧,你可以跳过第 7 章以后的章节和附录,但是如果不了解第 1 章到第 6 章中的大部分内容,你就无法充分利用 Bash。如果没有别的,你需要知道小节标题中的内容。我知道你认为
input_1_128是一个变量。但是您使用了错误的括号将表达式视为变量。你有$(input_1_128);你需要${input_1_128}。差异至关重要!
标签: bash