sedを使用してSQLスクリプトのパスを変更します。

sedを使用してSQLスクリプトのパスを変更します。

bashスクリプトでoracle sqlスクリプトのパスを変更しようとしています。

read -e -p "Enter the ORACLE SID: " -i "orcl" ORACLE_SID_VALUE
sed -i "DEFINE tsdir = '/u02/app/oracle/oradata/orcl';/c\DEFINE tsdir = '/u02/app/oracle/oradata/${ORACLE_SID_VALUE}'" schema-install.sql

スクリプトを実行すると、次のエラーが発生します。 sed: -e 式 #1、文字 2: コマンドの後の追加文字

誰でも正しいsedコマンドを使用するのに役立ちますか?


追加情報

明確にすると、Schema-install.sqlファイルには、Oracleデータベースが保存される場所を定義する行があります。

DEFINE tsdir = '/u02/app/oracle/oradata/orcl';

この値を変更したいです。オーク私の入力変数ORACLE_SID_VALUEの値として。

答え1

私は努力します:

sed -i -e "/DEFINE tsdir = /c\
DEFINE tsdir = '/u02/app/oracle/oradata/${ORACLE_SID_VALUE}'
" schema-install.sql

sedパス定義の/によって混乱します。

答え2

あなたの質問で私が理解している限り、あなたは交換しようとします。

DEFINE tsdir = '/u02/app/oracle/oradata/orcl'

渡す

DEFINE tsdir = '/u02/app/oracle/oradata/${ORACLE_SID_VALUE}'

これがあなたが望むものであれば、以下を使用して達成できます。

sed -i "s#DEFINE tsdir = '/u02/app/oracle/oradata/orcl'#DEFINE tsdir = '/u02/app/oracle/oradata/${ORACLE_SID_VALUE}'#" schema-install.sql

関連情報