Problème avec les arguments de Ligne de Commande qui a obtenu des espaces
J'ai été frappé à un problème bizarre , pour lequel j'ai trouvé la cause de la raison , après beaucoup de débogage .
J'ai un programme Java qui je suis en cours d'exécution dans un environnement Linux par le biais d'un script bash .
C'est mon simple script bash qui accepte une Chaîne de caractères .
#!/bin/bash
java -cp com.QuoteTester $1
Le problème est que l'argument de ligne de commande peut être avec des Espaces ou Sans espaces .
Par exemple, il peut être soit
Apple Inc. 2013 Jul 05 395.00 Call
OR
Apple
Comme pour mon code c'est de cette manière
public static void main(String[] args)
{
String symbol = args[0];
if (symbol.trim().contains(" ")) //Option
{
}
else //Stock
{
}
Donc, la question est que , lorsque j'essaie d'exécuter de cette façon
./quotetester Apple Inc. 2013 Jul 05 395.00 Appel
sa ne va toujours à la else condition
qui est Stock .
Est-il de toute façon je peux résoudre ce problème ??
double possible de l'espace en Java arguments de ligne de commande
Comment au sujet de l'utilisation des guillemets autour de l'arg?
OriginalL'auteur Kiran | 2013-07-12
Vous devez vous connecter pour publier un commentaire.
Lorsque vous passez des arguments de ligne de commande avec des espaces, ils sont pris comme séparés par des espaces, des arguments, et sont séparées dans l'espace. Donc, vous n'avez pas un seul argument, mais plusieurs arguments.
Si vous voulez passer des arguments avec des espaces, utilisez des guillemets:
OriginalL'auteur Rohit Jain
Ce n'est pas un Java problème soi. C'est une coquille question, et s'applique à tout ce que vous appelez avec de tels arguments. Votre coque est de diviser les arguments et les nourrir séparément pour le processus Java.
Vous devez citer les arguments tels que le shell ne pas les séparer. par exemple,
etc.
Voir ici pour une plus longue discussion.
OriginalL'auteur Brian Agnew
Les arguments sont traités par le shell , de sorte que toute les paramètres du terminal ne devrait pas affecter cette. Vous avez juste besoin d'avoir cité l'argument et cela devrait fonctionner.
OriginalL'auteur Juned Ahsan
Guillemets simples sont la meilleure option
Espaces et les guillemets peuvent être résolus de cette manière.
OriginalL'auteur Ammad