Je fais des scripts pour mes machines virtuelles et j'utilise cygwin. J'ai besoin de définir le nom de l'ordinateur et l'adresse IP. Cette partie est facile, dans cet ordre:Bash appelant programme Windows, comment fonctionne le devis?
wmic computersystem where caption=name "vm-01"
netsh interface ip set address "Local Area Connection 2" static 10.155.155.50 255.255.255.0
Cela fonctionne très bien dans cmd.exe. Maintenant, je veux l'exécuter depuis bash. Je veux voir commande J'exécution, donc je suis en utilisant cette fonction bash pour le faire:
call() {
echo "[email protected]"
[email protected]
}
Je l'ai essayé de manière intuitive des citations qui s'échappent:
$ call wmic computersystem where caption=name \"wm-01\"
Executing (\\BOH\ROOT\CIMV2:Win32_ComputerSystem.Name="XXX")->rename()
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
ReturnValue = 87;
};
Ce qui ne marche pas le travail (ne pas être encrassé par « Méthode d'exécution réussie » comme je l'étais au début), le code d'erreur 87.
$ call netsh interface ip set address \"Local Area Connection 2\" static 10.155.155.50 255.255.255.0
d'autre part, cela fonctionne très bien.
j'ai réussi à le résoudre pour la commande wmic
en utilisant
$ call wmic computersystem where caption=name \'wm-01\'
Executing (\\BOH\ROOT\CIMV2:Win32_ComputerSystem.Name="XXX")->rename()
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
ReturnValue = 0;
};
qui fonctionne. J'ai essayé la même chose avec netsh
$ call netsh interface ip set address \'Local Area Connection 2\' static 10.155.155.101 255.255.255.0
The filename, directory name, or volume label syntax is incorrect.
qui ne fonctionne pas. Ce que j'essaie de comprendre, c'est pourquoi une commande a besoin de \'
et une autre \"
?
Dumb question, mais avez-vous essayé avec des citations sans échappement? – Mort
Vous pouvez essayer des guillemets simples autour des guillemets: ''" Local Area Connection 2 "' ', ou guillemets simples seuls:' 'Local Area Connection 2''. – CherryDT
ups, j'ai foiré ma question, j'ai oublié d'inclure la raison pour laquelle je m'échappe. Je le passe en fonction bash qui l'appelle ensuite. S'il vous plaît voir la question mise à jour :) Désolé les gars:/ – Paladin