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