あなたが示したもので、あなたはかっこをエスケープする必要があります:
echo execute some_procedure\(123,234\) | sqlplus username/[email protected]
または、コマンドを二重引用符で囲みます:
echo "execute some_procedure(123,234)" | sqlplus username/[email protected]
どちらも、シェルがパラセンス自体を解釈しようとするのを停止します。これにより、'syntax error: '(' unexpected
または同様のエラー。 Oracleとは実際には何の関係もありません。エコーされた文字列をSQL*Plusにパイプする前に、シェルインタプリタがどのように機能するかを示しています。
ちなみに、私は通常、この種のことにはヒアドキュメントを使用し、ps
で表示されないようにコマンドラインにクレデンシャルを配置することは避けます。;例:
sqlplus -s /nolog <<!EOF
connect username/[email protected]
execute some_procedure(123,234)
exit
!EOF