2009-05-29 7 views
0

D'accord, j'ai un script qui prend quelques arguments, exécute des données, puis renseigne les données sur un serveur différent. Le problème est que pour exécuter les données, je dois prendre l'un des arguments et ensuite exécuter un rapport en l'utilisant, ce qui est très bash hostile (Ex. [3023.2 <> 1], [5111.3 $] = "5", etc). Donc, si je dois exécuter la commande, j'ai besoin de mettre l'argument en guillemets simples, ce qui ferait que l'argument ne serait pas tiré dessus.Mixage de guillemets simples et doubles dans Bash

Ainsi, si je devais exécuter le script ...

arg1 = [5111.3$]="5" 

runjob specfile.spx '$arg1' 

Cela ne fonctionnerait pas, mais si je devais courir avec des guillemets doubles, alors il y a une bonne chance que l'argument qui obtient Passé aura des guillemets doubles. Des idées sur la façon de contourner cela?

Répondre

2

Utilisez des guillemets simples autour de la valeur lorsque vous définissez, puis utilisez les guillemets doubles autour de la variable lorsque vous développez il:

$ arg1='[5111.3$]="5"' 
$ echo "$arg1" 
[5111.3$]="5" 
0

Quote escape. Essayez

[5111.3$]=\"5\" 

Le Guide Scripting avancé a une bonne section sur quoting.

Questions connexes