I have the following function:
#!/bin/bash
get_instance{
dbname=$(sqlplus -s / as sysdba<<EOF
set pages 0
set feedback off
select name from v$database;
exit;
EOF)
echo $dbname
}
get_instance
It seems to work. In the middle of the error message, I get my dbname
, but still returns a syntax error.
oracle@testdb01:db01:/home/oracle/
> ./test.sh
./test.sh: line 3: get_instance{: command not found
DB01
./test.sh: line 11: syntax error near unexpected token `}'
./test.sh: line 11: `}'
If I remove the function call completely, I get the result with no errors:
dbname=$(sqlplus -s / as sysdba<<EOF
set pages 0
set feedback off
select name from v$database;
exit;
EOF)
echo $dbname
oracle@testdb01:db01:/home/oracle
> ./test.sh
DB01
What do I need to do to get this to work in a function?
EDIT:
Following suggestion to place bracket after EOF tag and add function keyword:
> vi test.sh
"test.sh" 12 lines, 160 characters
#!/bin/bash
# updated file
function get_instance{
dbname=$(sqlplus -s / as sysdba<<EOF
set pages 0
set feedback off
select name from v$database;
exit;
EOF
)
echo $dbname
}
get_instance
oracle@testdb01:db01:/home/oracle
> ./test.sh
./test.sh: line 10: syntax error near unexpected token `dbname=$(sqlplus -s / as sysdba<<EOF
set pages 0
set feedback off
select name from v$database;
exit;
EOF
)'
./test.sh: line 10: `)'
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…