J'ai un alias:conditionnellement abandon dans un alias Bash
alias local='if [ -z "${FUNCNAME[0]}" ]; then builtin local; fi; declare'
Ce que je veux utiliser pour rediriger les commandes locales dans ma fonction annoncez modifié, qui peut alors déclarer les variables, et seulement utiliser le builtin local
pour obtenir messages d'erreur si en dehors d'une fonction.
L'alias a une sortie de (en utilisant -x set):
+ '[' -z '' ']'
+ builtin local
-bash: local: can only be used in a function
+ declare
En ce moment, il exécute la declare
de toute façon et je voudrais pour sortir si la vérification échoue. Je ne peux pas utiliser une fonction pour cela.
Jusqu'à présent, je l'ai essayé retour, pause et la sortie (sortie pas ici pour des raisons évidentes):
alias 'local=if [ -z "${FUNCNAME[0]}" ]; then builtin local; return 1; break; fi; declare'
+ '[' -z '' ']'
+ builtin local
-bash: local: can only be used in a function
+ return 1
-bash: return: can only `return' from a function or sourced script
+ break
-bash: break: only meaningful in a `for', `while', or `until' loop
+ declare
Exemple:
# When outside an function
local some_var=val
+ '[' -z '' ']'
+ builtin local
-bash: local: can only be used in a function
# That's it
# When inside an function func
local some_var=val
+ '[' -z func ']'
+ declare some_var=val
# Uses my modified declare function
Essayez-vous d'ombrer le mot clé 'local'? Quoi qu'il en soit, pourquoi ne pas mettre 'declare' dans un bloc' else' si vous ne voulez pas qu'il s'exécute à chaque fois? –
n'est pas 'local: ne peut être utilisé que dans une fonction', l'expliquer? Ne fais pas ça! ;-) Tout ce qui va prendre des arguments variables devrait être écrit comme une fonction. Bonne chance. – shellter
@Eric Renouf Si je mets la déclaration dans un autre bloc, il ne pourra pas déclarer les variables, voir ma mise à jour. – BonBon