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