如何在while循环内动态使用变量

格萨

在Unix下执行以下操作时出错:我希望第三行开始工作...在ksh shell中

while [ ${i} -le 3 ]
do
     var${i}="hello${i}"
     echo "${var}${i}"
     i=`expr ${i} + 1`
done

我想得到如下输出,

hello1
hello2
斯蒂芬·查泽拉斯(Stephane Chazelas)

在POSIX中sh,您需要eval使用带有动态名称的变量。

i=0
while [ "$i" -le 3 ]
do
   eval '
     var'"$i"'="hello${i}"
     echo "var$i = ${var'"$i"'}"
   '
   i=$((i+1))
done
echo "${var1}"

使用时eval,至关重要的是确保在传递给的参数中仅扩展需要扩展的变量eval(并清除它们的值(此处我们知道它们是安全的十进制数字序列))。

上方仅$i扩展了两个为此,我们去除单引号(强引号)并插入$i内部双引号:eval '...'"$i"'...'

因为很难正确地进行报价(否则会很危险),因此最好限制使用范围eval理想情况下,仅要将动态变量的内容传递给静态变量和/或将其传递回静态变量,例如:

i=0
while [ "$i" -le 3 ]
do
   var=hello$i # $var with static name
   eval "var$i=\$var" # transfer into variable with dynamic name

   echo "var$i = $var" # use var with static name instead of dynamic one
                       # everywhere else (for which we don't need eval)

   i=$((i+1))
done
echo "${var2}"

ksh/ zsh/ bash/中yash,您可能要改用数组(或中的关联数组ksh93zsh或的最新版本bash)。注意,ksh/bash数组索引在启动0和阵列稀疏(更像键关联数组限于正整数),而在所有其他的壳(包括zshyash在类似Bourne前),索引从1开始和数组是正常阵列。

ksh/ bash/中zsh -o ksharrays

unset -v var
i=0; while [ "$i" -le 3 ]; do
  var[i]=hello$i
  echo "var[$i]=${var[i]}"
  i=$((i+1))
done
echo "${var[1]}"

或使用/ /通用((...))的POSIXsh语法的另一个扩展kshzshbash

unset -v var
i=0; while ((i <= 3)); do
  var[i]=hello$i
  echo "var[$i]=${var[i]}"
  ((++i))
done
echo "${var[2]}"

或者ksh93bashzsh -o ksharrays

unset -v var
for ((i = 0; i <= 3; i++)); do
  var[i]=hello$i
  echo "var[$i]=${var[i]}"
done
echo "${var[3]}"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在while循环内运行的函数中定义变量?

来自分类Dev

如何在WHILE循环内使用FOREACH循环创建几列

来自分类Dev

如何在变量内循环

来自分类Dev

如何在变量内循环

来自分类Dev

如何在SQL中使用While循环创建变量

来自分类Dev

管道后如何在子壳内使用while循环

来自分类Dev

T-SQL | 如何在While循环中将值动态设置为变量

来自分类Dev

如何在SQL中的for循环内创建动态变量名

来自分类Dev

如何在while循环上方打印变量

来自分类Dev

javascript如何在循环内创建变量

来自分类Dev

javascript如何在循环内创建变量

来自分类Dev

如何在Java循环之外的while循环中使用变量?

来自分类Dev

如何在循环中使用导入的函数以及该函数内的循环变量?

来自分类Dev

使用动态变量获取for循环内对象的值

来自分类Dev

对于循环,如何在循环外使用循环变量

来自分类Dev

如何在postgres动态SQL中使用带引号的字符串内的变量

来自分类Dev

如何在for循环内动态模拟python函数的结果?

来自分类Dev

在while循环内使用for循环

来自分类Dev

如何在SQL Server的While循环中设置变量

来自分类Dev

如何在变量中返回while循环的乘积

来自分类Dev

如何在多线程while循环外扩展变量

来自分类Dev

Python Blackjack Game如何在while循环中携带变量

来自分类Dev

如何在 WHILE EXISTS() 循环中分配变量

来自分类Dev

如何在 while 循环中更新“全局”变量?

来自分类Dev

如何在while循环中连接两个变量

来自分类Dev

PHP:如何在类内创建动态变量

来自分类Dev

我该如何使用变量内的变量进行for循环工作

来自分类Dev

php while循环以获取动态发布变量

来自分类Dev

如何在FormArray的循环内使用PatchValue?

Related 相关文章

热门标签

归档