diff --git a/Bash.md b/Bash.md
index 60d1b137f41305074a33ce4f021366ae7c2e4f82..6846b96a6e82ceadbc2397d208f852265e817d3c 100644
--- a/Bash.md
+++ b/Bash.md
@@ -244,6 +244,34 @@ myvar=$( ls )
 
 ---
 
+## String manipulation
+
+Consider `string=abcABC123ABCabc` and `filename=myfile.txt`
+
+* string length : `${#string}` is `15`
+* substring extraction : 
+  * `${string:7}` is `23ABCabc`
+  * `${string:7:3}` is `23A`
+  * `${string:(-4)}` or `${string: -4}` is `Cabc` 
+* substring removal from front :
+  * `${string#a*C}` is `123ABCabc`
+  * `${filename##myfile}` is `.txt`
+
+---
+
+* substring removal from back :
+  * `${string%b*c}` is `abcABC123ABCa`
+  * `${filename%%.txt}` is `myfile`
+
+## Variable expansion
+
+* `${variable-default}` : 
+  if `variable` is unset or null, the expansion of `default` is substituted
+* `${variable+default}` : 
+  if `variable` is unset or null, nothing is substituted, otherwise the expansion of  `default` is substituted
+
+---
+
 # Arithmetic
 
 |  Operator    |     Operation   |
@@ -326,7 +354,7 @@ The following operaors can be used beween conditions:
 
 # Conditional exemple
 
-(Dont pay too much attention to the details yet)
+(Don't pay too much attention to the details yet)
 
 ```bash 
 #!/bin/bash
@@ -449,6 +477,7 @@ my_array[0]=56.45
 my_array[1]=568
 echo Number of elements: ${#my_array[@]}
 # echo array's content
+echo ${my_array[2]}
 echo ${my_array[@]}
 ```
 
@@ -466,7 +495,7 @@ echo ${acronyms[ACK]}
 if [ ${acronyms[EOF]+_} ]; then echo "Found"; else echo "Not found"; fi
 ```
 
-The variable expansion `${MYVAR+ABC}` expands to "ABC" is `MYVAR` is set and to nothing otherwise.
+> the variable expansion `${MYVAR+ABC}` expands to `ABC` is `MYVAR` is set and to nothing otherwise
 
 ```bash
 declare -A countries=( [ALB]=Albania [BHR]=Bahrain [CMR]=Cameroon [DNK]=Denmark [EGY]=Egypt )
@@ -919,11 +948,11 @@ bash test.sh
 # Subshells
 
 * A subshell is a "child shell" spawned by the main shell ("parent shell")
-* A subshell is a separate instance of the command process, run as a new process
-* Unlike calling a shell script, subshells inherit the same variables as the original process
+* A subshell is a **separate** instance of the command process, run as a new process
+* **Unlike calling a shell script** (slide before), subshells inherit the **same** variables as the original process
 * A subshell allows you to execute commands within a separate shell environment = *Subshell Sandboxing*
   > useful to set temporary variables or change directories without affecting the parent shell's environment 
-* Subshells can be used for parallel processing 
+* Subshells can be used for **parallel processing** 
 
 ---
 
@@ -981,7 +1010,7 @@ greeting $COUNTRY
 COUNTRY="France"
 ./myScript.sh # or bash or exec
 echo $COUNTRY
-greeting $COUNTRY
+greeting $COUNTRY # !!
 ```
 
 ```bash