psql 연결 문자열이 변수에 저장되는 bash 스크립트가 있습니다.
그런 다음 세 가지 기능을 정의했습니다. —————————
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