SQL oracle DBに格納されているエイリアスを説明するKSHスクリプトエラー

SQL oracle DBに格納されているエイリアスを説明するKSHスクリプトエラー

テーブルにエイリアスとしてファイルパスを保存しました(テーブルのフィールドと比較してフルパスが長すぎるため)。しかし、私のKSHスクリプトは次のことを行います。

nomtmp=`sqlplus -S bla/bla <<ENDOFSQL
 select myPath
   ||'/'
   || 'myFileName'
   || '.xml'   
from myTable;
 exit
ENDOFSQL`

(myPathには$ ficが含まれています)$ ficはエイリアスとして解釈されないため、スクリプトはエイリアスとして解釈されない「$ fic」ディレクトリ内のファイルを見つけます。

テーブルの内容を変更できません。エイリアスのように処理する必要があることをどうやって知ることができますか?

とても感謝しています。

答え1

あなたのSQLクエリは、nomotmpに割り当てられたときにシェル変数の値に拡張したいサブストリング$ ifcを返すようです。

この場合、シェルeval組み込みコマンドを含むいくつかの方法を使用してこれを実行できます。この試み:

nomtmp=$(eval echo "$(sqlplus -S bla/bla <<ENDOFSQL
 select myPath
   ||'/'
   || 'myFileName'
   || '.xml'   
from myTable;
 exit
ENDOFSQL)")

気づく

$( ... )

同じですか?

` ... `

ただし、前者は入れ子になる可能性があるため、より望ましいです。また、${ifc}データベースでこれを代わりに使用して、$ifc前後にスペースがない実際の部分文字列として使用できます。

関連情報