2013-01-23 1 views
2

J'utilise un script shell pour exécuter sql écrit dans des fichiers de script SQL. Dans les fichiers de script, certaines variables de liaison peuvent être transférées à partir de les paramètres d'exécution du shell.comment transférer des variables qui ont des espaces de shell à oracle sqlplus

Voici mon code.

result=`sqlplus -s ${DB_USER_NAME}/${DB_USER_PWD}@${DB_SID}<<! 
     SET HEADING ON 
     SET UNDERLINE OFF 
     SET COLSEP ',' 
     WHENEVER SQLERROR EXIT 255 
     SET TRIM SPOOL ON 
     SPOOL $outputPath 

     @{sqlFilePath} [email protected] 


     #@${sqlFilePath} "[email protected]"  
` 

quand je lance le shell comme ceci:

run_sql.sh param1 param2 "param 3" 

le @ $ sera expliqué param1, param2, param, 3 comme quatre vaiables

@{sqlFilePath} param1 param2 param 3 

le « $ @ "sera expliqué à" param1 param2 param 3 "comme une variable

@{sqlFilePath} "param1 param2 param 3" 

mais je veux que les paramètres seront expliqués comme cette

@{sqlFilePath} param1 param2 "param 3" 

est-il un moyen de résoudre mon problème?

Répondre

2

Que diriez-vous:

run_sql.sh param1 param2 '"param 3"' 

qui devrait se développer dans votre script:

@{sqlFilePath} param1 param2 "param 3" 
+0

à DCookie: merci beaucoup! ça marche bien sur mon script. Je devrais trouver le détail de la double citation et de la citation unique. – tousinn

+0

@ user966610: jetez un oeil à la page de bash man ici: http://www.gnu.org/software/bash/manual/bashref.html#Quoting – DCookie

Questions connexes