Files
mkdocs/docs/Divers/bash/programmation.md
2019-12-08 18:11:40 +01:00

146 lines
3.0 KiB
Markdown

# 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
```
##### Concaténer une chaine:
```bash
upd+="$name "
```
#### Trim une chaine:
##### 1. sed
```bash
$ var=" Une chaine entourée d'espaces "
$ echo "Fluctuat nec $var mergitur"
Fluctuat nec Une chaine entourée d'espaces mergitur
# supprimer les espaces en fin de chaine: sed 's/ *$//g'`
$ var=`echo $var | sed 's/ *$//g'`
$ echo "Fluctuat nec $var mergitur"
Fluctuat nec Une chaine entourée d'espaces mergitur
# supprimer les espaces en début de chaine: sed 's/^ *//g'`
$ var=`echo $var | sed 's/^ *//g'`
$ echo "Fluctuat nec $var mergitur"
Fluctuat nec Une chaine entourée d'espaces mergitur
# supprimer les espaces en début et fin de chaine:
$ var=" Une chaine entourée d'espaces "
$ echo "$var" | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//'
Une chaine entourée d'espaces
```
##### 2. awk
```bash
$ echo "${var}"
Une chaine entourée d'espaces
$ echo "${var}" | awk '{gsub(/^[ \t]+/,""); print $0, " fin" }'
Une chaine entourée d'espaces fin
$ echo "${var}" | awk '{gsub(/[ \t]+$/,""); print $0, " fin" }'
Une chaine entourée d'espaces fin
$ echo "${var}" | awk '{gsub(/^[ \t]+| [ \t]+$/,""); print $0, " fin" }'
Une chaine entourée d'espaces fin
```
##### 3. xargs
```bash
$ var=" Une chaine entourée d espaces "
$ echo "$var" | xargs
Une chaine entourée d espaces
$ echo " Une chaine entourée d espaces " | xargs
Une chaine entourée d espaces
# erreur si la chaine contient un apostrophe
$ echo " Une chaine entourée d'espaces " | xargs
xargs: unterminated quote
# dans ce cas, on utilise xargs -0
$ echo " Une chaine entourée d'espaces " | xargs -0
Une chaine entourée d'espaces
```
#### Longueur d'une chaine:
```bash
$ echo -n "Longueur de la chaine:" | wc -c
22
$ echo "Longueur de la chaine:" | awk '{print length}'
22
$ var="Longueur de la chaine:"
$ echo ${#var}
22
```
Déclarer un tableau associatif:
```bash
declare -a do_not_update=('')
```
##### 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
```