Comment puis-je faire bash face à une longue param à l'aide de “getopt” commande sous mac?
Je veux faire mon script bash face à une longue paramètres. J'ai trouvé getopt
, mais il n'est pas pris en charge dans OS X. quelqu'un Peut me dire pourquoi getopt
a été mis en œuvre par BSD, mais pas GNU?
J'ai essayé de construction getopt
dans GNU C lib, mais il a échoué pour mes pauvres compétences avec Linux.
Quelqu'un faire ce travail?
Vous devez vous connecter pour publier un commentaire.
Il y a un brasser de la bouteille pour getopt.
Il suffit d'exécuter
brew install gnu-getopt
.Vous pouvez spécifier le chemin d'accès, comme
/usr/local/Cellar/gnu-getopt/1.1.6/bin/getopt
Ou de l'utilisation
brew link --force gnu-getopt
de sorte qu'il sera lié dans/usr/local/bin/
Juste être conscient que le fait de forcer la liaison pourrait corrompre votre système (car il remplace le système de getopt par celui du projet gnu).
Voir aussi autre réponse, ce qui suggère de définir
FLAGS_GETOPT_CMD
.g
-préfixebrew
utilise pour les autres GNU coreutils, vous pouvez ajouter ceci à votre.bash_profile
:if [[ -x /usr/local/Cellar/gnu-getopt/1.1.6/bin/getopt ]] ; then alias ggetopt=/usr/local/Cellar/gnu-getopt/1.1.6/bin/getopt; fi
echo 'export PATH="/usr/local/opt/gnu-getopt/bin:$PATH"' >> ~/.zshrc
. J'ai exécuté la commande et il a encore de vidage de la même chose. Tous les conseils?source ~/.zshrc
Je recommande d'utiliser l'Homebrew installer
gnu-getopt
puis en ajoutant$FLAGS_GETOPT_CMD
à votre~/.bash_profile
fichier pour spécifier le cmd chemin pour getopt, pointant vers l'homebrew emplacement, comme suit:Puis suivez les instructions à partir de brew à ajouter à votre chemin d'accès local:
Ensuite, vous pouvez ajouter
FLAGS_GETOPT_CMD
:Ouvrez un nouveau terminal, ou d'exécuter
. ~/.bash_profile
dans le terminal existant à la modification de la chargeExécuter
echo $FLAGS_GETOPT_CMD
afin de confirmer qu'il a été effectivement mis dans votre console. ~/.bash_profile
... il fonctionne très bien je l'ai juste testé sur la dernière version d'OSX ... et vous pouvez trouver de nombreux tutoriels et des commentaires en ligne en l'utilisant comme bien github.com/nvie/gitflow/issues/98 à titre d'exempleIl est généralement préférable d'utiliser
getopts
au lieu de cela, et le bâton avec options courtes. Vous pouvez voir getopts en action dans cette StackOverflow Q&A. À court d'options sont plus la norme dans OSX outils de ligne de commande, et la cohérence est une bonne chose.Aussi, getopts est construit en bash, donc ce n'est certainement disponible dans OSX, ainsi que tous les autres plate-forme qui peut exécuter bash.
Remarque qu'il y a un
getopt
est également disponible dans OSX. Depuis le Terminal, tapezman getopt
de voir sa documentation. Il ne supporte pas longtemps les options. C'est une bonne raison de ne pas utiliser de longue options lorsque vous écrivez des outils pour s'exécuter sur OSX.Si vous voulez faire cela, de toute façon, vous pouvez installer
getopt
de macports. Alternativement, si vous souhaitez une meilleure portabilité, vous pouvez rouler votre propre long de l'argument de la manipulation.Poster du code, et nous allons vous aider à déboguer.