# Bash



#### Variables:

##### Incrémenter une variable:

```bash
i=$((i+1))              user    0m0.992s
i=$((i++))              user    0m0.964s
((i=i+1))               user    0m0.760s
((i+=1))                user    0m0.700s
((i++))                 user    0m0.644s
((++i))                 user    0m0.556s
let "i=i+1"             user    0m1.116s
let "i+=1"              user    0m1.100s
let "i++"               user    0m1.008s
let i=i+1               user    0m0.952s
let i+=1                user    0m1.040s
let i++                 user    0m0.820s
declare -i i; i=i+1     user    0m0.528s
declare -i i; i+=1      user    0m0.492s
i=0; i=$(expr $i + 1)   user    0m5.464s
```



#### [Chaine de caractères:](strings.md)

##### Concaténer une chaine:

```bash
upd+="$name "
```



#### Chemins:

Répertoire courant (pwd) , nom du script (basename), répertoire du script (dirname)

```bash
~/Documents/go $ nano chemins.sh

#!/usr/local/bin/bash
echo "Le script exécuté a comme basename `basename "$0"`, dirname `dirname "$0"`"
echo "Le répertoire courant est `pwd`"

~/Documents/go $ ./chemins.sh
Le script exécuté a comme basename chemins.sh, dirname .
Le répertoire courant est /Users/bruno/Documents/go

cd ..
~/Documentsr $ go/chemins.sh
Le script exécuté a comme basename chemins.sh, dirname go
Le répertoire courant est /Users/bruno/Documents

cd ~
~ $ /Users/bruno/Documents/go/chemins.sh
Le script exécuté a comme basename chemins.sh, dirname /Users/bruno/Documents/go
Le répertoire courant est /Users/bruno
```



#### [Tableaux:](tableaux.md)

Déclarer un tableau associatif:

```bash
declare -a do_not_update=('')
```



#### Commandes:

##### Test si une commande existe:

```bash
if [ -x "$(command -v jq)" ]; then
```

Tester l'argument d'une commande:

```bash
if [[ $1 == "--nodistract" ]]; then
```

Test du code de retour d'une commande:

```bash
brew missing
status=$?
if [ $status -ne 0 ]; then
```

