Obtenir le type de variable dans bash
En Python, je peux obtenir le type de variable par:
>>> i = 123
>>> type(i)
<type 'int'>
J'ai vu sur cette page qu'il n'existe pas de types de variables dans bash. L'explication donnée est:
Variables non typées sont à la fois une bénédiction et une malédiction. Ils permettent plus de souplesse dans l'écriture de script et de le rendre plus facile à moudre à des lignes de code (et vous donner suffisamment de corde pour se pendre!). Cependant, ils ont également permis de subtiles erreurs éventuelles et favoriser l'bâclée habitudes de programmation.
Mais je ne suis pas sûr de ce que cela signifie et quelles sont les réels avantages (et inconvénients).
Vous devez vous connecter pour publier un commentaire.
Bash n'a pas de types de la même manière que Python (même si je dirais que Python a des classes plutôt que de types). Mais bash variables n'ont attributs qui sont donnés (pour la plupart) par le biais de
declare
, mais la gamme d'attributs est assez petite. Vous pouvez trouver un attribut à l'aide dedeclare -p
, par exemple,declare -i
crée un entier:Donne:
Mais c'est un pauvre par rapport à Python, ou presque toutes les langues modernes. Le problème est que dans quelque chose comme Bash le type de base est une chaîne de texte, et c'est très bien si vous avez besoin des chaînes de texte pour des choses comme les noms de fichiers. Mais une fois que vous commencez à avoir besoin de faire le traitement lourd vous avez besoin d'autres types. Bash ne prend pas en charge la virgule flottante, par exemple. Vous avez également besoin d' composé types, comme une classe décrivant un fichier avec tous les attributs d'un fichier peut avoir.
Bash 4 n'ont tableaux associatifs (
declare -A
), similaire à Python dictionnaires, qui étend les fonctionnalités considérablement.Même si, la plupart serait d'accord que l'Orientation de l'Objet est à peu près impossible de Bash, bien que certains diront que cela peut être fait en Korn shell (qui a beaucoup plus de fonctionnalités puissantes). http://en.wikipedia.org/wiki/Object-oriented_programming
Ce que bash a est très bien pour ce qu'elle est destinée à - traitement simple qui est facile et rapide de travail. Mais il y a une masse critique au-delà duquel l'aide de ce langage devient délicate, source d'erreurs, et lent. Cette masse critique peut être l'un d'échelle, c'est à dire une grande quantité de données, ou de la complexité.
Il n'est pas simple de cut-off point où vous devez cesser d'utiliser Bash et de passer à Python. C'est juste que les programmes deviennent plus complexes et plus le cas pour l'utilisation de Python devient plus fort.
Je dois ajouter que les scripts shell, rarement plus petites et moins complexes au fil du temps!
declare -- myVar="foo"
, quand je l'ai créé commemyVar=$token
. Probablement, si vous ne déclarez pas explicitement l'attribut, il ne le laissera pas...