Bash: 함수 내에서 호출할 때 psql 명령을 찾을 수 없습니다.

Bash: 함수 내에서 호출할 때 psql 명령을 찾을 수 없습니다.

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

관련 정보