La commande read permet de lire des données de l'entrée standard.
!!! ATTENTION à la commande read lorsque qu'elle est utilisée avec un pipe | dans un script !!! echo -e $lines | while read line ... done La boucle ci-dessus sera executée dans un subshell. Donc tous les changements éffectués sur des variables ne seront pas conservés lors de la sortie du subshell. Lire la page bash - boucles (while, for) pour lire la solution.
root@ubuntu:~# read -n1 -r -p "Press any key to continue..." key
root@ubuntu:~# read -r -p "Quel est votre nom ? " name Quel est votre nom ? Alexandre root@ubuntu:~# echo $name Alexandre
#!/bin/bash while true; do read -r -p "Please confirm? [Y/n] " user_input case $user_input in [yY][eE][sS]|[yY]) echo "Yes"; break;; [nN][oO]|[nN]) echo "No"; exit 1;; *) echo "Invalid input..."; continue;; esac done echo "I'm here"
#!/bin/bash myString="Ceci est une série de mots" read -r -a mots <<< "$myString" echo "Le premier mot de myString est : ${mots[0]}" # Ceci echo "Le deuxième mot de myString est : ${mots[1]}" # est echo "Le troisième mot de myString est : ${mots[2]}" # une echo "Le quatrième mot de myString est : ${mots[3]}" # série echo "Le cinquième mot de myString est : ${mots[4]}" # de echo "Le sixième mot de myString est : ${mots[5]}" # mots echo "Le septième mot de myString est : ${mots[6]}" # (null)
#!/bin/bash while read -r user shell; do echo "user=${user} and shell=${shell}" done <<< "$(awk -F":" '{print $1,$7}' /etc/passwd)"
#!/bin/bash while read -r line; do echo "line=${line}" done <<< "$(grep -E "(^${mypattern},|,${mypattern}$)" /tmp/mydatatfile.txt)"
#!/bin/bash while read -r myfile; do echo "myfile=${myfile}" cp -pv ${myfile} ${myfile}.$(date +"%Y%m%d%H%M") sed -i -e "s/timeout = 15000/timeout = 30000/" ${myfile} done <<< "$( grep -l "timeout = 15000" /tmp/*.txt )"
#!/bin/bash ### convert space separated values into csv while IFS= read -r i_line; do #echo ${i_line} IFS=' ' read -r -a i_array <<< "${i_line}" csv_string=$( printf "%s;" "${i_array[@]}" ) ### join array to string with space separator csv_string=${csv_string%?} ### remove last space from string echo ${csv_string} >${csv_file} done < ${input_file}
#!/bin/bash unset csv_array while IFS=';' read -r -a csv_array; do local l_customername=${csv_array[0]} local l_customerid=${csv_array[1]} local l_liveaccount=${csv_array[2]} local l_customeraddress=${csv_array[3]} local l_args_array=("${l_liveaccount}" "${l_customerid}") ma_super_fonction "${l_args_array[@]}" ||return 1 done <<< "$( grep -E "^[A-Z0-9_]{1,};[0-9]{3,5};[0-1]{1};[A-Za-z0-9+][A-Za-z0-9 /:._-]*$" ${mon_fichier_csv} )"