SQL 쿼리를 사용하여 값을 찾은 변수가 있습니다.
이 변수를 다른 변수와 연결하고 싶기 때문에 이 변수에서 개행 문자를 제거하고 싶습니다. 코드는 다음과 같습니다.
dt=`sqlplus -s user/pwd@servicename <<EOF
set feedback off;
set head off;
select replace(to_char((sysdate-7),'YYYYMonDD')||'_'||to_char((sysdate-1),'YYYYMonDD'),chr(10), '') from dual;
exit;
EOF`
echo "test $dt"
답변1
다음을 사용하는 경우 bash
매개변수 확장을 사용할 수 있습니다 .
dt=${dt//$'\n'/} # Remove all newlines.
dt=${dt%$'\n'} # Remove a trailing newline.
/bin/sh
다음 사항도 적용되어야 합니다.
dt="${dt%
}" # Remove a trailing newline.
답변2
다음과 같이 "tr"이 필요한 것 같습니다.
echo ${dt} | tr -d '\n'
평소처럼 man tr 자세한 내용은
답변3
이는 Linux(bash)에서 작동합니다.
dt="$(echo "$dt"|tr -d '\n')"
Linux 또는 GNU 날짜 유틸리티가 있는 기타 시스템에서는 dt 값도 얻습니다. (Oracle은 포함되지 않습니다...)
dt="$(date -d 'yesterday' +%Y%b%d)_$(date -d '7 days ago' +%Y%b%d)"
답변4
설정 페이지 [IZE] {14 n} 페이지당 출력 라인 수를 설정합니다. PAGESIZE를 0으로 설정하면 모든 제목, 페이지 나누기, 머리글, 초기 빈 줄 및 기타 형식 정보가 표시되지 않습니다.
set pagesize 0
따라서 헤더에 빈 줄이 생기지 않도록 스크립트에 a를 추가하세요.
대부분의 스크립트에서는 다음 스니펫의 설정을 사용합니다.
dt=`sqlplus -s 사용자/pwd@서비스 이름< < EOF 피드백 닫기 페이지 크기를 0으로 설정 트림을 켜짐으로 설정 자르기 선을 켜짐으로 설정 선 너비를 300으로 설정 에코 끄기 설정 인증을 꺼짐으로 설정 교체(to_char((sysdate-7),'YYYYMonDD')||'_'를 선택하세요. ||to_char((sysdate-1),'YYYYMonDD'),chr(10), '') 듀얼에서; 출구; EOF' 에코 "테스트$dt$dt"