OS X bash: dirname
Je veux créer un simple script bash pour lancer un programme Java sur mac OS X. Le nom du fichier, le chemin d'accès au fichier et le dossier de travail de tous les contenir d'espaces. Quand je fais cela:
#!/bin/sh
cd `dirname $0`
- Je obtenir
usage: dirname path
J'ai aussi essayé de mettre les guillemets dans toutes sortes d'endroits différents. La plus élaborée, par exemple
cd "`dirname \"$0\"`"
Rien n'a fonctionné. Soit je reçois un message d'erreur ou que cryptic "usage: dirname chemin" message.
Quelles sont les autres méthodes qui pourraient travailler?
Edit: cela ne semble pas être un problème pour personne, mais moi, donc il doit tout simplement être ma boîte. Je vais accepter mon propre post ci-dessous parce que c'est la seule solution qui a fonctionné pour ce problème spécifique. Cependant, je ne suis certainement upvoting les solutions qui semblent être au travail pour tout le monde et j'apprécie vraiment l'aide de tous.
echo $0
rendement? dirname pourrait avoir un problème avec quelque chose de spécifique au sujet de la valeur de $0. Avez-vous essayé de lancer ce script dans un répertoire différent?Votre deuxième exemple fonctionne pour moi avec un répertoire de six niveaux de profondeur où tous les autres ancêtre a au moins un espace dans son nom.
jamais essayer de regarder dirname la page de manuel?
Je suis à la recherche d'elle en ce moment. Ce que je cherche?
OriginalL'auteur Dinah | 2009-08-20
Vous devez vous connecter pour publier un commentaire.
Ce sujet:
Qui fonctionne pour moi ici.
OriginalL'auteur Sean Bright
OriginalL'auteur Ned Deily
Ce qui a finalement fonctionné pour moi est en train de changer cela:
:
Ce prend également en charge les noms de fichiers et les chemins d'accès de fichier contenant des espaces. Voici où j'ai trouvé: http://rentzsch.com/unix/locationAwareCommandFiles
Oh, je vois. Z shell. Cool.
J'ai toujours continué à obtenir "usage: dirname chemin". Je pense que c'est quelque chose à faire avec ma machine. Mais ce z shell solution a fonctionné pour moi. Bizarre.
vous pouvez également essayer de /bin/bash - je pense que /bin/sh est un lien symbolique vers /bin/bash, mais bash intéresse à la façon dont il a été invoqué, et les changements de certaines choses dans son comportement en conséquence. Donc, si vous l'appelez avec /bin/sh
Je crois que vous avez raison. Il devrait être à l'aide de /bin/bash... stackoverflow.com/questions/11061727/...
OriginalL'auteur Dinah
Échapper à l'intérieur des guillemets est inutile:
Mais qui n'est pas à la racine du problème, qui est que d'une certaine manière la valeur de 0 $semble être vide, ou peut-être quelque chose d'étrange. Essayez de changer l'exécution de votre script de cette façon:
Cela se fera l'écho de chaque ligne, avec des variables interpolées, avant de l'exécuter. Il est très utile pour le débogage. Également très utiles:
OriginalL'auteur pimlottc
Hey pas sûr à ce sujet... Mais est-il possible que votre
Points pour quelque chose qui n'est pas bash? Ce que j'utilise habituellement est:
Assez nouveau à l'ensemble de script chose si vous ne savez pas.
OriginalL'auteur sixtyfootersdude