146 lines
3.0 KiB
Markdown
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
|
|
```
|
|
|