0 bash
我用 for 循环声明了 var0、var1、var2、var3。我如何回显 for 循环中的变量?这是代码。
#!/bin/bash
for i in {0..3}
do
export var$i=$i
done;
Run Code Online (Sandbox Code Playgroud)
我在那里定义了 var0、var1、var2、var3.. 我如何在循环中访问它们?
我尝试了以下
for i in {0..3}
do
echo $var$i
tmpvar=var$i
echo $tmpvar
done
Run Code Online (Sandbox Code Playgroud)
但是没有人给我 var0,var1 的值...第一个 echo 只打印了 '0,1,2,3',第二个 echo 打印了 'var0,var1,var2,var3' 我该怎么办?我要价值观。。
鉴于,
var0=a
var1=b
var2=c
Run Code Online (Sandbox Code Playgroud)
对于 ksh93 或 bash 4.3 或更高版本,您可以使用 nameref 来指向各个变量:
for i in 0 1 2; do
typeset -n p="var$i"
echo "$p"
done
Run Code Online (Sandbox Code Playgroud)
但是,除非您明确需要将变量作为单独的标量(例如,因为您通过环境传递它们),并且不使用严格标准的 shell,而是使用 Bash 或 ksh,否则您应该使用数组:
#!/bin/bash
a=(a b c)
for i in 0 1 2; do
echo "${a[i]}"
done
Run Code Online (Sandbox Code Playgroud)
或忽略索引:
for x in "${a[@]}"; do
echo "$x"
done
Run Code Online (Sandbox Code Playgroud)
(当然,Zsh 也有数组,默认情况下它只是从 1 开始索引,所以第一个不能直接工作。)