Lire les éléments du fichier en utilisant le script bash

Si j’ai un fichier avec le nom “read7” avec une liste de nombres, par exemple:

2 3 4 

Comment puis-je écrire un script bash avec une boucle while pour lire tous les éléments du fichier et les convertir en carrés et les envoyer en sortie standard?

Donc, après avoir exécuté le script, nous devrions avoir une sortie de

 4 9 16 

Si vous souhaitez utiliser une boucle while, vous pouvez dire:

 while read -ri; do echo $((i*i)); done < read7 

Pour votre consortingbution, il émettrait:

 4 9 16 

Selon votre commentaire , if the file has words and numbers in it. How do I make it read just the numbers from the file? if the file has words and numbers in it. How do I make it read just the numbers from the file? . Tu pourrais dire:

 while read -ri; do [[ $i == [0-9]* ]] && echo $((i*i)); done < read7 

Pour un fichier d'entrée contenant:

 2 foo 3 4 

il produirait:

 4 9 16 

Essayez awk:

 awk '{print $1*$1}' read7 

Vous n’avez pas besoin d’utiliser la boucle while. Utiliser awk :

 $ cat read7 2 3 4 $ awk '{print $1*$1}' read7 4 9 16