Bash:関数内で呼び出すとpsqlコマンドが見つかりません。

Bash:関数内で呼び出すとpsqlコマンドが見つかりません。

psql接続文字列が変数に格納されるbashスクリプトがあります。

次に、3つの機能を定義しました。 ——————————

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

おすすめ記事