Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 增量变量名导致找不到命令_Bash_Variables_Increment_Variable Names - Fatal编程技术网

Bash 增量变量名导致找不到命令

Bash 增量变量名导致找不到命令,bash,variables,increment,variable-names,Bash,Variables,Increment,Variable Names,我试图根据输入增加一个变量名,并在循环完成后调用该值 for i in `seq 5`; do var$i="number is $i" done echo $var2 $var5 导致 ./test.sh: line 4: var1=number is 1: command not found ./test.sh: line 4: var2=number is 2: command not found ./test.sh: line 4: var3=number i

我试图根据输入增加一个变量名,并在循环完成后调用该值

for i in `seq 5`; do
  var$i="number is $i"
done
 echo $var2 $var5
导致

./test.sh: line 4: var1=number is 1: command not found
./test.sh: line 4: var2=number is 2: command not found
./test.sh: line 4: var3=number is 3: command not found
./test.sh: line 4: var4=number is 4: command not found
./test.sh: line 4: var5=number is 5: command not found
有两件事我不明白:

var1=数字为1,表示一个命令。 var2和var5实际上是生成的,但它们不会显示在循环之外。
您不能像这样使用带有数字的变量名:您确实需要说:

var1=1
var2=2
var3=3
var4=4
var5=5
另一种方法是使用数组

就增加而言,这不是问题的一部分,但我给出的是,无论如何,你可以使用这样的东西:

Prompt> var1=1
Prompt> var2=$((var1+1))
Prompt> echo $var2
2
计算时请注意双括号

var1=number是未找到的1命令,因为该命令不是命令。例如,您可以编写: 对于'seq 5'中的i;做 echo var$i=编号为$i 完成 输出结果将如下所示

var1=number is 1
var2=number is 2
var3=number is 3
var4=number is 4
var5=number is 5
变量尚未生成,您不能仅动态生成变量。尝试使用数组
为了达到所需的结果,需要使用阵列,因此:

#!/bin/bash
for i in $(seq 5)
do
  var[$i]="number is $i"
done
for i in "${var[@]}"
do
    echo "$i"
done
相应地设置数组变量的索引和值,然后在数组中循环并打印值。

var2和var5也不会生成。变量赋值的语法是NAME=VALUE。参数扩展稍后才起作用,因为var$i不是有效的变量名,所以会出现类似的错误,就像编写了var,i=value一样。如果您觉得必须创建这样的变量,可以执行eval var$i=number is$i,但在大多数情况下,以不同的方式设计脚本将是更好的解决方案。