просмотр файла тегов, кажется, добавляет вопросительный знак - PullRequest
3 голосов
/ 27 мая 2020

Я использую bash и пытаюсь l oop через строки файла добавить теги git:

$ while read p; do  echo $p; git tag $p; done <NEW_TAGS.txt

Учитывая, что NEW_TAGS.txt имеет следующее содержимое:

Test_V1_4.3
Test_V2_2.7

и каждая строка заканчивается на <CR><LF>, результат строки выше:

Test_V1_4.3
fatal: 'Test_V1_4.3?' is not a valid tag name.
Test_V2_2.7
fatal: 'Test_V2_2.7?' is not a valid tag name.

Откуда берутся вопросительные знаки? Как их удалить?

В качестве альтернативы, есть ли лучший способ добавить список тегов к git из файла?

1 Ответ

2 голосов
/ 27 мая 2020

Проблема в символе новой строки. Linux и Unix используют \n, тогда как системы dos (Windows) используют \r\n. Используйте dos2unix, чтобы изменить символ новой строки.

[Alex@Normandy tmp]$ cat NEW_TAGS.txt 
Test_V1_4.3
Test_V2_2.7
[Alex@Normandy tmp]$ file NEW_TAGS.txt 
NEW_TAGS.txt: ASCII text
[Alex@Normandy tmp]$ while read p; do  echo $p; git tag $p; done <NEW_TAGS.txt
Test_V1_4.3
fatal: tag 'Test_V1_4.3' already exists
Test_V2_2.7
fatal: tag 'Test_V2_2.7' already exists
[Alex@Normandy tmp]$ unix2dos NEW_TAGS.txt 
unix2dos: converting file NEW_TAGS.txt to DOS format ...
[Alex@Normandy tmp]$ file NEW_TAGS.txt 
NEW_TAGS.txt: ASCII text, with CRLF line terminators
[Alex@Normandy tmp]$ while read p; do  echo $p; git tag $p; done <NEW_TAGS.txt
Test_V1_4.3
fatal: 'Test_V1_4.3?' is not a valid tag name.
Test_V2_2.7
fatal: 'Test_V2_2.7?' is not a valid tag name.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...