bash脚本编写-如何使用被称为变量的函数的结果

时间:2018-07-10 13:04:56

标签: bash unix

试图弄清楚如何将一个函数的结果传递给另一个(作为变量)。以下是我正在处理的脚本:

#!/usr/local/bin/bash

set -x
_creds=/path/access
_pgpw=$(getPW)

getPW(){ 
  masterpw=$(grep -E 'url.*myfooapp.com' -A4 ${_creds}/access.json \
  | grep "pwd" \
  | awk '{split($0,a,":"); print a[2]}' \
  | grep -o '".*"' \
  | tr -d '"')
}

runQuery(){
  PGPASSWORD="${_pgpw}" \
  psql -h myfooapp.com -U masteruser -d dev -p 5439 
  echo "CLUSTER: ${_cluster}"
}

runQuery
set -x

我需要的是PGPASSWORD才能从函数getPW获得结果,并且返回空白。我不确定是否通过尝试调用函数对变量_pgpw=$(getPW)进行了正确设置。请提供最佳方法建议。谢谢

2 个答案:

答案 0 :(得分:1)

函数可以带参数;可通过位置参数$1$2等在函数内部访问它们。

runQuery () {
    PGPASSWORD=$1
    psql ...
}

runQuery "$(getPW)"

答案 1 :(得分:1)

Bash在读取脚本时逐行执行脚本。您需要先定义函数,然后再调用它。在编写脚本时,_pgpw=$(getPW)在定义之前被调用,因此不会产生任何输出。只需将getPW()定义下方的{{1}}行移动。