1. & 2. I am unable to locate any stright forward solution. You can make use of temp tables. Create a temp table in oracle having 2 cols - col_name and col_value and insert the variable name and it's value in these two cols. And then you can fetch these values from your SQL Script.
3. This can be worked out by calling an EXTERNAL ROUTINE The required OS command can be stored in a DLL (any routine written in C or C++). . You register the routine in your PL/SQL routine, and then call it to executu your OS command. OR you can even your DBMS_PIPE
Do let me know for other alternative solutions ....
Pras is right guys...for first two questions..
about third question it is not possible to use host command in pl/sql block cause it will give u error
Identifier HOST must be declared...
Try out with UTL_FILE...