Có một vài cách tiếp cận khác nhau trong chuỗi askTom này trên trả về giá trị từ SQL * Plus cho tập lệnh shell .
Một cách tiếp cận phổ biến là chọn một mã thông báo không đổi ngoài giá trị mà bạn muốn trả về (trong ví dụ của Tom, đó là chuỗi "KEEP") và sau đó sử dụng sed (hoặc trình phân tích cú pháp dòng lệnh yêu thích của bạn) để trích xuất dữ liệu của bạn. thực sự quan tâm đến
#!/bin/ksh
x=`sqlplus / <<endl | grep KEEP | sed 's/KEEP//;s/[ ]//g'
select 'KEEP' , max(sal) from emp;
exit
endl`
echo the answer is $x
Các phương pháp tiếp cận khác, chẳng hạn như các phương pháp cho phép bạn đọc nhiều dòng đầu ra cũng được thảo luận trong chủ đề đó.
Nếu bạn không muốn in tiêu đề, bạn nên chỉ định
set head off
trong tập lệnh SQL * Plus của bạn-- Tôi không chắc tại sao bạn lại bật tiêu đề một cách rõ ràng trong tập lệnh nếu bạn không muốn tiêu đề ... Bạn có muốn giữ lại một số phần của tiêu đề không?