Bash:在函数内调用时找不到 psql 命令

Bash:在函数内调用时找不到 psql 命令

我有一个 bash 脚本,其中 psql 连接字符串存储在变量中。

之后我定义了三个函数。 —————————

export PC="usr/bin/psql --host=abx --port=1234 --dbname=A --username=user"

function one
{
$PC<<EOF
SEL 1;
EOF
}

function two
{
while IFS= read -r line
do
 three $line
done < file
}

function three
{
if [ $1 == Y ]
then
$PC<<EOF
Update table;
EOF
fi
}

#main function
one
two

—————————

当我执行脚本时,函数one可以工作,从数据库检索数据,但是three从函数调用的函数two不断失败并显示消息

bash: psql -u …($PC expanded): command not found

我已经检查了变量PATHIFS,没有问题。

$PC现在,如果我在函数定义中使用扩展three,那么它就可以工作。

那么只有当我使用变量时才会失败?有任何想法吗?

答案1

这是未经测试的,但是如果您将代码调整为这样会怎么样?

pc()
{
  /usr/bin/psql --host=abx --port=1234 --dbname=A --username=user
}

one()
{
  pc << EOF
SEL 1;
EOF
}

two()
{
  while IFS= read -r line
  do
    three "$line"
  done
}

three()
{
  if [ "$1" = Y ]
  then
    pc << EOF
Update table;
EOF
  fi
}

# main function

one
two < file

相关内容