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

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

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

  • Как выполнить одну команду для всех файлов в папке
  • Выполнить файл, если команда не найдена
  • Поиск различного имени файла в цикле
  • Как удалить дубликаты в моем .bash_history, сохраняя заказ?
  • Какова концепция, скрытая за термином «команда»?
  • Удалить завершающую новую строку из «буфера обмена», чтобы предотвратить выполнение на терминале?
  • Необходимо передавать URL-адреса в кавычках
  • Как открыть сессию bash incognito?
  • One Solution collect form web for “Как сохранить новые строки, исходящие из вывода команды во время присвоения переменной?”

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

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

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

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