我如何在bash中从另一个的输出创建一个变量

Kev*_*vin 0 variables bash eval dynamic

这是一个不符合我期望的示例脚本:

#!/bin/bash
for dynamic in a b c; do
  myvar=$dynamic

  export $myvar="hi"

  echo $(eval "$myvar")
  echo $dynamic
done
Run Code Online (Sandbox Code Playgroud)

我希望输出是:

hi

a

hi

b

hi

c
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我愿意偏离这种方法,但我绝对希望能够创建一个从算法输出中命名的变量.在这种情况下,它只是一个for循环.

Gor*_*son 6

eval有引起错误的倾向,所以尽可能避免它; 在这种情况下,使用间接扩展更加清晰${!metavariable}:

#!/bin/bash
for dynamic in a b c; do
  myvar=$dynamic

  export $myvar="hi"

  echo ${!myvar}
  echo $dynamic
done
Run Code Online (Sandbox Code Playgroud)