Entrée nulle dans un file text

J'ai un script qui crée des users sous Linux et Oracle, lorsque je crée plusieurs users j'utilise ce qui suit:

cat /path/path/file.txt | while read USER PASS ORAUSER ROLE do 

Cependant, j'ai eu le malheur de laisser le rôle vide et cela a fait des choses horribles à mes users. Je me demandais comment je peux vérifier si le text a une variable vide.

Moyens de vérifier si une variable est vide:

 # bash if [[ -z $var ]]; then echo var is empty fi # POSIX sh if [ -z "$var" ]; then echo var is empty fi printf %s\\n "${var:-var is unset or null}" : "${var:=default value for var}" 

Cela ne résout toujours pas le problème des champs manquants ou mal alignés dans votre file d'input. Si le champ ORAUSER est manquant, la variable ORAUSER sera assignée à la valeur du champ ROLE . S'il y a trop de champs, la dernière variable, ROLE , recevra tous les champs supplémentaires. Je vous recommand de changer votre format de file text pour utiliser un séparateur qui n'est pas un espace vide, de sorte que les champs vides sont explicitement délimités. Par exemple, /etc/passwd utilise des deux-points (:).

Si vous ne l'avez pas encore fait, je vous recommand également de lire BashFAQ 1 pour une sagesse collective sur l'parsing correcte des files text ligne par ligne / champ par champ dans les scripts shell et bash particulier.