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

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

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

  • Ошибка ./c.sh: строка 24: [: слишком много аргументов в программе оболочки
  • Использование подстановок / подстановочных знаков при открытии файлов с терминала
  • Передача аргументов с кавычками и двойными значениями в сценарий bash
  • Почему терминал отправляет CR, даже если установлен ICRNL?
  • Расширение брекета не работает в скрипте
  • Элегантный способ предотвратить замену команд от удаления конечной строки новой строки
  • Разделить страницы в 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 - лучшая ОС в мире.