引用另一个linux中的变量

引用另一个linux中的变量

我有一个脚本 test.sh 如下

#!/bin/bash
echo "$1"

我从另一个脚本调用该脚本,如下所示

#!/bin/bash
declare -A val
val[first]="./test.sh ${value} | grep testing "

for KEY in "${!val[@]}"; do
  value="testing"
  echo "${val[$KEY]}"
done

echo "${val[$KEY]}"回报./test.sh | grep testing

它不是打印值变量的值。为什么?

答案1

到目前为止,您的脚本定义了该变量但未对其求值:

您分配"./test.sh ${value} | grep testing ",但${value}将在以下时间扩展任务。但是,此时您value还没有定义,因此它是空的,并且字符串变为"./test.sh | grep testing"。使用单引号 ( ') 而不是双引号 ( ") 以防止 shell 扩展变量:

'./test.sh ${value} | grep testing '

稍后你会echo得到变量的值。如果你想执行./test.sh ...您存储在变量中的命令,您需要对其进行评估,例如

eval "${val[$KEY]}"

相关内容