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

3.0 KiB

Bash

Variables:

Incrémenter une variable:
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:
upd+="$name "

Trim une chaine:

1. sed
$ 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
$ 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
$ 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:

$ 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:

declare -a do_not_update=('')
Test si une commande existe:
if [ -x "$(command -v jq)" ]; then

Tester l'argument d'une commande:

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

Test du code de retour d'une commande:

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