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