Bonjour,
Quel est la différence entre:
Et:Code:
1
2 l=`echo $[ ${#fichier} - 1]`
Lequel est mieux? Pourquoi?Code:
1
2 l=$[ ${#fichier} - 1]
D'avance merci.
Version imprimable
Bonjour,
Quel est la différence entre:
Et:Code:
1
2 l=`echo $[ ${#fichier} - 1]`
Lequel est mieux? Pourquoi?Code:
1
2 l=$[ ${#fichier} - 1]
D'avance merci.
Salut,
n'a aucun intérêt, echo te permet d'afficher du texte sur la console et, là, tu récupères ce que tu affiches pour l'attribuer à la variable.Code:l=`echo $[ ${#fichier} - 1]`
`` est déprécié, il faut utiliser $().
Attribue directement la valeur à la variable.Code:l=$[ ${#fichier} - 1]
Pour info, ce n'est pas le cas ici, mais si tu veux utiliser des variables, pas besoin de les mettre entre ${} quand ils sont entre $[]
La 2eme est donc la plus logique.Code:
1
2 x=1 echo $[x + 1]
Oui!
Attention, toutefois, à ce petit détail: echo fait un léger traitement de ses arguments.Citation:
l=`echo $[ ${#fichier} - 1]` n'a aucun intérêt, echo te permet d'afficher du texte sur la console et, là, tu récupères ce que tu affiches pour l'attribuer à la variable.
Dans d'autres situations que l'Évaluation arithmétique, le traitement des espaces, tabulations et autres returns peut avoir son importance.
Code:
1
2
3
4
5
6
7
8
9
10
11 $ A="a b" $ echo "$A" # toujours mettre entre guillemets le développement des variables a b $ echo $A # si on n'en met pas, le format n'est pas respecté a b $ B=$A $ echo "$B" a b $ B=$(echo $A) $ echo "$B" a b
En effet, je n'y avais pas pensé :)
Bonjour :coucou:
Pour que les grands débutants qui se demandent, il y a bien 4 notations différentes.
- ` ` (2 backticks AltGr + touche 7 du clavier azerty)
- $( )
- $[ ]
- $(( ))
Les première et la deuxième accueillent une commande.
Les troisième et quatrième font une évaluation arithmétique.
1 et 3 sont surannées au profit de 2 et 4.
Code:
1
2
3
4
5
6
7
8
9
10
11 $ polo=7 $ echo $[$polo+1] 8 $ echo $($polo+1) -bash: 7+1 : commande introuvable $ echo $(echo marco) marco $ echo $[echo marco] -bash: echo marco : erreur de syntaxe dans l'expression (le symbole erroné est «*marco*») $