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

Это не легко. Как Вы дифференцируетесь между "файлом, который требовался чем-то, что я с тех пор удалил" из "файла, который не требуется ничем больше, что я действительно хочу"?

Можно использовать package-cleanup команда от yum-utils пакет для списка "вершин" в графе зависимостей пакета. Это пакеты, которые могут быть удалены, не влияя ни на что больше:

$ package-cleanup --leaves

Это произведет список "библиотек", от которых ничто иное не зависит. В большинстве случаев можно безопасно удалить эти пакеты. Если Вы добавляете --all к командной строке:

$ package-cleanup --leaves --all

Вы получите пакеты, которые не считают библиотеками, также, но этот список будет таким длинным, что это, вероятно, не будет полезно.

0
18.04.2013, 02:31
1 ответ

Необходимо заключить расширение в кавычки, иначе оно подвергнется разделению слова, которое является тем, что Вы испытываете.

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

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

mapfile acl < <(getfacl somefile.dat)
printf %s "${acl[@]}"
4
28.01.2020, 02:21
  • 1
    Эй @Chris, Спасибо! я не знал, 'что слово разделило' и использовало кавычки вокруг переменной, действительно решает мою проблему.. Просто любопытный, как я могу сохранить запаздывание новых строк (не уверенный, где такая вещь могла бы помочь), использующий ksh..? –  Kent Pawar 17.04.2013, 11:49
  • 2
    @KentPawar первый метод должен также работать в ksh. –  Chris Down 17.04.2013, 11:55
  • 3
    Да, это делает.. Извините, но не вполне получил Ваш 2-й пример.. что mapfile выполнение..? –  Kent Pawar 17.04.2013, 11:58
  • 4
    @KentPawar От help mapfile: "[r] ead строки от стандартного входа в переменную индексного массива". Это по существу читает каждую строку из вывода getfacl somefile.dat в названный массив acl. –  Chris Down 17.04.2013, 12:00
  • 5
    @Kent - извините за беспорядок. "новые строки полос" не являются командой, это - просто текст. Я думаю в Вашем случае, просто необходимо включить переменную в кавычки как предложенный Chris. –  suspectus 17.04.2013, 13:08

Теги

Похожие вопросы