为什么不能将命令的输出存储到Shell变量中?

时间:2019-02-02 04:58:48

标签: shell

我正在使用aws ssm命令检索aws参数存储值。我得到了结果。我需要将此值存储在shell变量中,以便以后使用。

在Mac终端上。我正在通过AWS CLI调用以获取aws参数,我从aws获取了值,但是由于缺乏使用Shell的知识,我无法将其设置为shell变量

export PASS=echo "$(aws ssm get-parameters --names "/enterprise/org/dev/spring.datasource.password" --with-decryption --query "Parameters[0].Value" | tr -d '"')"
echo $PASS

当我回显$ PASS时,我希望看到参数的值,但是我什么也没得到。我确信该值存在,因为如果我不导出而只运行$ aws ssm get-parameters。我看到了结果。

1 个答案:

答案 0 :(得分:2)

将命令输出分配给变量的正确方法是:

export PASS=$(aws ssm get-parameters --names "/enterprise/org/dev/spring.datasource.password" --with-decryption --query "Parameters[0].Value" | tr -d '"')

您的操作方式,这就是Shell的作用:

  • 将PASS设置为“回显”
  • 它运行aws命令管道并将输出解释为命令并尝试运行

相关: