Bug 24251

Summary: False positive "Unterminated quoted string" error
Product: [Development] Sisyphus Reporter: Sergey Kurakin <kurakin@altlinux.org>
Component: checkbashismsAssignee: Fr. Br. George <george@altlinux.org>
Status: NEW QA Contact: qa-sisyphus@altlinux.org
Severity: normal    
Priority: P3    
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
checkbashisms fails on this script
none
checkbashisms processes this script successfully none

Description From 2010-10-09 15:58:25
Скрипт i2myspell из одноименного пакета:

$ checkbashisms /usr/bin/i2myspell
possible bashism in /usr/bin/i2myspell line 61 ([^] should be [!]):
s/\([^ ]*\).>.\([^,]*\)$/0 \2 \1/
possible bashism in /usr/bin/i2myspell line 62 ([^] should be [!]):
s/\([^ ]*\).>.-\([^,]*\),\(\-\)$/\2 0 \1/
possible bashism in /usr/bin/i2myspell line 63 ([^] should be [!]):
s/\([^ ]*\).>.-\([^,]*\),\(.*\)$/\2 \3 \1/' |
error: /usr/bin/i2myspell: Unterminated quoted string found, EOF reached.
Wanted: <'>

Удалось выяснить, что ошибка с определением закрывающей кавычки происходит на
строке 46 проверяемого скрипта, а всё остальное -- это уже последствия.

Ошибочно распознаваемая конструкция выглядит так:

sed 's#/# #g
s# #/#'

Запись конструкции в одну строку (sed 's#/# #g;s# #/#') проблемы не решает.
Зато проблема решается заменой "#" на любой другой разделитель. Причем,
достаточно заменить "#" только во втором шаблоне:

sed 's#/# #g
s| |/|'

Такая конструкция проблем не вызывает и проверяется успешно.
------- Comment #1 From 2010-10-12 17:38:19 -------
Если вы оформите предложение по исправлению checkbashisms в виде патча сюда
и/или в mainstream, то я смогу его применить в новой сборке пакета.
------- Comment #2 From 2010-10-12 20:06:41 -------
Created an attachment (id=4607) [details]
checkbashisms fails on this script
------- Comment #3 From 2010-10-12 20:08:32 -------
Created an attachment (id=4608) [details]
checkbashisms processes this script successfully
------- Comment #4 From 2010-10-12 20:10:13 -------
Был бы патч -- не было бы вопросов. Пока могу предоставить только testcase.