user3671361
user3671361

Reputation: 175

Shell Script EOF with variable

Hi I would like to know how to add a a regular tab

I want to the store the result in a variable of executing ls -lis.

AUX=`ls -lis $i`
RESULT+="$AUX"
I have a loop for all the files. And when I do 
echo $RESULT:

All the information is in one line and I want to have an EOF for each file:

I have tried this but it doesn't work:

RESULT+="$AUX"
RESULT+=`echo -ne '\t'`

Thanks for your time

Upvotes: 0

Views: 875

Answers (2)

F. Hauri  - Give Up GitHub
F. Hauri - Give Up GitHub

Reputation: 70862

You have to enquote your argument (to variable definitions AND commands), with double-quotes:

AUX="`ls -lis $i`"
RESULT+="$AUX"
# ...  loop $i..
echo "$RESULT"

Doing so, newlines will be stored in variables too.

You could even add extra newlines:

AUX="`ls -lis $i`"
RESULT+="$AUX"$'\n\n'
# ...  loop $i..
echo "$RESULT"

One test:

RESULT=
for i in /usr /var;do
    AUX="$(ls -lis $i)"
    RESULT+="$AUX"$'\n\n'
  done

sort -nk7 <<<"$RESULT"

could render someting like

total 244
total 96
    13  0 lrwxrwxrwx  1 root root      4 jun 11  2013 run -> /run
    12  0 lrwxrwxrwx  1 root root      9 jun 11  2013 lock -> /run/lock
131073  4 drwxr-xr-x 19 root root   4096 déc 15 11:28 cache
    14  4 drwxr-xr-x  2 root root   4096 déc 15 11:29 www
     2  4 drwxrwsr-x  12 root staff  4096 jun 11  2013 local
262145  4 drwxr-xr-x  2 root root   4096 nov 22 19:22 state
393217  4 drwxr-xr-x  3 root root   4096 aoû  1  2014 games
393305  4 drwxrwsr-x  2 root staff  4096 déc 14  2012 local
393306  4 drwxr-xr-x 22 root root   4096 mar 26 07:35 log
393330  4 drwxrwsr-x  2 root mail   4096 jun 11  2013 mail
393331  4 drwxr-xr-x  2 root root   4096 mai  5  2013 opt
393332  4 drwxr-xr-x  9 root root   4096 oct 13  2013 spool
524289  4 drwxr-xr-x  2 root root   4096 mar 25 07:35 backups
524290  4 drwxr-xr-x 79 root root   4096 fév 12 22:52 lib
663002  4 drwxr-xr-x   7 root root   4096 jan  6  2014 src
    11 16 drwx------   2 root root  16384 jun 11  2013 lost+found
    11 16 drwx------  2 root root  16384 jun 11  2013 lost+found
526043 16 drwxr-xr-x   2 root root  16384 fév 22 23:09 sbin
526287 16 drwxr-xr-x 439 root root  16384 mar 24 13:43 share
655361 20 drwxr-xr-x  68 root root  20480 fév 22 23:09 include
131155 36 drwxrwxrwt  3 root root  36864 mar 26 13:52 tmp
131073 60 drwxr-xr-x 248 root root  57344 mar 24 07:42 lib
524289 92 drwxr-xr-x   2 root root  90112 mar 24 13:43 bin

Upvotes: 1

l0b0
l0b0

Reputation: 58908

Printing a Tab character is as simple (and portable) as printf '\t'. For example:

$ printf 'a\tb\n'
a       b

However, you'll want to look into how to loop through files reliably, and why not to use ls for this.

Upvotes: 1

Related Questions