Как сохранить новые строки, исходящие из вывода команды во время присвоения переменной?

Рассматривать:

$ 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-- 

Итак, как мне сохранить эти новые строки во время назначения переменных, так что когда я эхо $ACL_PERMISSIONS я получаю тот же результат, что и $ getfacl somefile.dat ..?

  • Обработка опций Getopts, возможно ли добавить не переносимый ?
  • globbing и $ #
  • Как назначить имена файлов пробелу другой переменной без потери разделителя
  • Как запустить самую последнюю команду в AIX?
  • Сценарий, выполняемый отлично от разрывов файлов при выполнении с помощью Heredoc (в установке PHPmyadmin)
  • Приоритет параметров команды?
  • ^ x ^ y unix трюк для всех экземпляров последней команды?
  • Разделить страницы в pdf
  • One Solution collect form web for “Как сохранить новые строки, исходящие из вывода команды во время присвоения переменной?”

    Вы должны процитировать ваше расширение, иначе оно претерпит расщепление слов, что и есть то, что вы испытываете.

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

    Имейте в виду, что $( strips, заканчивая символами новой строки, в любом случае (это считается функцией). Если это проблема для вас, вам нужно сделать что-то вроде этого, чтобы сохранить их (в bash4 +):

     mapfile acl < <(getfacl somefile.dat) printf %s "${acl[@]}" 
    Linux и Unix - лучшая ОС в мире.