Как убрать одинарные кавычки при запуске в скрипте оболочки - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь вставить сообщение о коммите для измененных файлов, а также файлов без изменений, но фиксирую ошибки.

 git commit -m "${commit_mmes}" "${fil}" $(git ls-files | grep "\.txt" | tr '\n' ' ' | awk '{$1=$1};1')

 git commit -m 'Master Merge-Commit message' music/file1.mp3 'music/file2.txt music/file4.txt3music/file5.txt music/file4.txt'

Ответ команды git ls-files по-прежнему выглядит следующим образом

 'music/file2.txt music/file4.txt3music/file5.txt music/file4.txt'

как это убрать?

1 Ответ

0 голосов
/ 17 марта 2020

git ls-files кодирует "необычные" символы, если не указано -z:

Без опции -z имена путей с "необычными" символами заключаются в кавычки, как объяснено для переменная конфигурации core.quotePath (см. git -config [1]). При использовании -z имя файла выводится дословно, а строка завершается байтом NUL.

Кроме того, git ls-files может фильтровать напрямую без grep.

Таким образом, вы можете сделать :

git ls-files -x '*.txt' -i -z |\
xargs -0 git commit -m "${commit_mmes}"
...