试图弄清楚如何将一个函数的结果传递给另一个(作为变量)。以下是我正在处理的脚本:
#!/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)
进行了正确设置。请提供最佳方法建议。谢谢
答案 0 :(得分:1)
函数可以带参数;可通过位置参数$1
,$2
等在函数内部访问它们。
runQuery () {
PGPASSWORD=$1
psql ...
}
runQuery "$(getPW)"
答案 1 :(得分:1)
Bash在读取脚本时逐行执行脚本。您需要先定义函数,然后再调用它。在编写脚本时,_pgpw=$(getPW)
在定义之前被调用,因此不会产生任何输出。只需将getPW()
定义下方的{{1}}行移动。