2017-03-23 1 views
1

Vous voulez faire:Comment ne processus subtitution avec heredoc

del_comments(){ sed 's/\s*#.*//;/^\s*$/d'; } 

readarray -t arr < <(del_comments <<'EOF') 
a  # comm1 
b  # comm2 
# comm3 
c 
EOF  
printf "[%s]\n" "${arr[@]}" 

il des plaintes au sujet de la mal placé EOF. Comment écrire correctement ce qui précède?

Vous voulez avoir HEREDOC traité par la fonction del_comments et le résultat devrait aller à mapfile pour la lecture des lignes dans le tableau arr.

voulait sortie (de l'impression du tableau arr)

[a] 
[b] 
[c] 

Répondre

4

La bonne façon d'écrire votre commande est:

readarray -t arr < <(del_comments <<EOF 
a  # comm1 
b  # comm2 
# comm3 
c 
EOF 
) 

Assurez-vous EOF est sur la ligne elle-même, sans tête ou espace de fin.

, vous avez probablement besoin de réécrire votre fonction:

del_comments() { sed 's/[ ]*#.*//; /^$/d'; } 
  • [ ] doit contenir un espace et un onglet.
+3

Merci. :) Vous avez résolu deux problèmes. :) 1.) le 'EOF' a des espaces blancs 2.) le placement du') '** après ** le' EOF'. – cajwine