我有一个 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
我已经检查了变量PATH
和IFS
,没有问题。
$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