2010-08-10 2 views

Répondre

4

Vous devez citer la variable pour préserver les retours à la ligne.

$ var=$(cat isbndb.sample); echo "$var" | wc -l 

Et cat est inutile dans les deux cas:

$ wc -l < isbndb.sample 
$ var=$(< isbndb.sample); echo "$var" | wc -l 

Edit:

Bash bandes normalement supplémentaires sauts de lignes à partir d'un fichier quand il attribue son contenu à une variable. Vous devez recourir à quelques astuces pour les préserver. Essayez ceci:

IFS='' read -d '' var < isbndb.sample; echo "$var" | wc -l 

Réglage IFS null empêche le fichier d'être partagé sur les nouvelles lignes et le réglage du séparateur pour read null fait accepter le fichier jusqu'à la fin du fichier.

+0

$ var = $ (cat isbndb.sample); echo "$ var" | wc -l. la sortie est 12, manque une ligne, pourquoi? J'utilise cat pour lire à partir d'un fichier, car dans mon programme c'est en fait la sortie d'un autre cmd. – turtledove

+0

il semble que ma dernière ligne vide est omise. Comment régler ceci? merci – turtledove

+1

@ user408393: Voir ma modification. –