Ok,lets see an example,
-- Lets create a small procedure that will OUT 3 values
"afiedt.buf" 8 lines, 144 characters
1 create or replace procedure test(var1 out varchar2 ,var2 out varchar2,var3 out varchar2)
2 as
3 begin
4 var1 := 'X';
5 var2 := 'Y';
6 var3 := 'Z';
7* end;
SQL> /
Procedure created.
-- A sql script that will call this procedure and select the 3 OUT values
$cat pass_out.sql
set feedback off heading off pagesize 0 trimspool on
variable var1 varchar2;
variable var2 varchar2;
variable var3 varchar2;
execute test(:var1,:var2,:var3);
select :var1,:var2,:var3 from dual;
exit;
-- A shell array declared and initialised with the 3 variables through sqlplus
$set -A file_var `sqlplus -s thiru/*** @pass_out`
-- Access the Array variables in your shell script
$print ${file_var[0]} ${file_var[1]} ${file_var[2]}
X Y Z
-Thiru