Como posso preservar novas linhas vindas da saída de um comando durante a atribuição de variáveis?

0

Considere:

$ getfacl somefile.dat     # The output is formatted and contains several new lines..

# file: somefile.dat
# owner: user1
# group: group1
user::rw-
group::r--              #effective:r--
mask:r--
other:r--
$
$ ACL_PERMISSIONS=$(getfacl somefile.dat);
$ echo $ACL_PERMISSIONS;
# file: somefile.dat # owner: user1 # group: group1 user::rw- group::r-- #effective:r-- mask:r-- other:r--

Então, como eu preservo essas novas linhas durante a atribuição de variáveis, de modo que, quando eu faço eco de $ACL_PERMISSIONS , recebo a mesma saída que $ getfacl somefile.dat ..?

    
por Kent Pawar 17.04.2013 / 10:32

1 resposta

4

Você precisa citar sua expansão, caso contrário, ela será submetida à divisão de palavras, que é o que você está experimentando.

acl=$(getfacl somefile.dat)
echo "$acl"

Tenha em mente que $( retira as novas linhas de qualquer maneira (isso é considerado um recurso). Se isso é um problema para você, você precisa fazer algo assim para preservá-los (no bash4 +):

mapfile acl < <(getfacl somefile.dat)
printf %s "${acl[@]}"
    
por 17.04.2013 / 10:37