ik kijk vast over iets heel simpels heen, maargoed.
Ik probeer mijn "echo's" te vervangen voor "printf's" zoals POSIX aangeeft.
ik heb een bestand met 4 regels:
Zoals hieronder te zien is heeft deze 4 newlines (\n)
Maar zodra ik deze in variabele file_lines lees heeft die er volgens "wc" nog maar 3.
Waarom zet ie de laatste newline niet in de variabele?
ikke@laptop:~/bin/log$ cat status.cfg | wc -l
4
ikke@laptop:~/bin/log$ file_lines=$(cat status.cfg)
ikke@laptop:~/bin/log$ printf "$file_lines" | wc -l
3
Ik probeer mijn "echo's" te vervangen voor "printf's" zoals POSIX aangeeft.
ik heb een bestand met 4 regels:
code:
1
2
3
4
| # status,date,version_engine,version_script # status values: 0=valid, 1=invalid, 2=manually verified/ignore 1,2012-08-01 (13:37),0.9,0.9 0,2012-08-03 (18:37),1.0,1.0 |
Zoals hieronder te zien is heeft deze 4 newlines (\n)
Maar zodra ik deze in variabele file_lines lees heeft die er volgens "wc" nog maar 3.
Waarom zet ie de laatste newline niet in de variabele?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| ikke@laptop:~/bin/log$ od -c status.cfg 0000000 # s t a t u s , d a t e , v e 0000020 r s i o n _ e n g i n e , v e r 0000040 s i o n _ s c r i p t \n # s t 0000060 a t u s v a l u e s : 0 = v 0000100 a l i d , 1 = i n v a l i d , 0000120 2 = m a n u a l l y v e r i 0000140 f i e d / i g n o r e \n 1 , 2 0 0000160 1 2 - 0 8 - 0 1 ( 1 3 : 3 7 ) 0000200 , 0 . 9 , 0 . 9 \n 0 , 2 0 1 2 - 0000220 0 8 - 0 3 ( 1 8 : 3 7 ) , 1 . 0000240 0 , 1 . 0 \n 0000246 |
ikke@laptop:~/bin/log$ cat status.cfg | wc -l
4
ikke@laptop:~/bin/log$ file_lines=$(cat status.cfg)
ikke@laptop:~/bin/log$ printf "$file_lines" | wc -l
3