Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Annlix
ShellCheck
提交
1a529665
S
ShellCheck
项目概览
Annlix
/
ShellCheck
与 Fork 源项目一致
Fork自
镜像 / koalaman / ShellCheck
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
ShellCheck
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1a529665
编写于
11月 01, 2015
作者:
V
Vidar Holen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Properly handle escaped double quotes in quoted backtick expressions.
上级
a66ee296
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
14 addition
and
9 deletion
+14
-9
ShellCheck/Analytics.hs
ShellCheck/Analytics.hs
+1
-0
ShellCheck/Parser.hs
ShellCheck/Parser.hs
+13
-9
未找到文件。
ShellCheck/Analytics.hs
浏览文件 @
1a529665
...
...
@@ -2565,6 +2565,7 @@ prop_checkSpacefulness27= verifyNotTree checkSpacefulness "echo ${a:+'foo'}"
prop_checkSpacefulness28
=
verifyNotTree
checkSpacefulness
"exec {n}>&1; echo $n"
prop_checkSpacefulness29
=
verifyNotTree
checkSpacefulness
"n=$(stuff); exec {n}>&-;"
prop_checkSpacefulness30
=
verifyTree
checkSpacefulness
"file='foo bar'; echo foo > $file;"
prop_checkSpacefulness31
=
verifyNotTree
checkSpacefulness
"echo
\"
`echo
\\\"
$1
\\\"
`
\"
"
checkSpacefulness
params
t
=
doVariableFlowAnalysis
readF
writeF
(
Map
.
fromList
defaults
)
(
variableFlow
params
)
...
...
ShellCheck/Parser.hs
浏览文件 @
1a529665
...
...
@@ -623,7 +623,7 @@ readArithmeticContents =
readDoubleQuoted
,
readNormalDollar
,
readBraced
,
readBackTicked
,
read
Unquoted
BackTicked
,
readNormalLiteral
"+-*/=%^,]?:"
]
spacing
...
...
@@ -833,7 +833,7 @@ readNormalWordPart end = do
readGlob
,
readNormalDollar
,
readBraced
,
readBackTicked
,
read
Unquoted
BackTicked
,
readProcSub
,
readNormalLiteral
end
,
readLiteralCurlyBraces
...
...
@@ -869,7 +869,7 @@ readDollarBracedWord = do
list
<-
many
readDollarBracedPart
return
$
T_NormalWord
id
list
readDollarBracedPart
=
readSingleQuoted
<|>
readDoubleQuoted
<|>
readExtglob
<|>
readNormalDollar
<|>
readBackTicked
<|>
readDollarBracedLiteral
readDollarBracedPart
=
readSingleQuoted
<|>
readDoubleQuoted
<|>
readExtglob
<|>
readNormalDollar
<|>
read
Unquoted
BackTicked
<|>
readDollarBracedLiteral
readDollarBracedLiteral
=
do
id
<-
getNextId
...
...
@@ -927,15 +927,18 @@ readSingleQuotedPart =
readSingleEscaped
<|>
many1
(
noneOf
"'
\\\x2018\x2019
"
)
prop_readBackTicked
=
isOk
readBackTicked
"`ls *.mp3`"
prop_readBackTicked2
=
isOk
readBackTicked
"`grep
\"\\\"\"
`"
prop_readBackTicked3
=
isWarning
readBackTicked
"´grep
\"\\\"\"
´"
prop_readBackTicked4
=
isOk
readBackTicked
"`echo foo
\n
echo bar`"
prop_readBackTicked
=
isOk
(
readBackTicked
False
)
"`ls *.mp3`"
prop_readBackTicked2
=
isOk
(
readBackTicked
False
)
"`grep
\"\\\"\"
`"
prop_readBackTicked3
=
isWarning
(
readBackTicked
False
)
"´grep
\"\\\"\"
´"
prop_readBackTicked4
=
isOk
readSimpleCommand
"`echo foo
\n
echo bar`"
prop_readBackTicked5
=
isOk
readSimpleCommand
"echo `foo`bar"
prop_readBackTicked6
=
isWarning
readSimpleCommand
"echo `foo
\n
echo `bar"
prop_readBackTicked7
=
isOk
readSimpleCommand
"`#inline comment`"
prop_readBackTicked8
=
isOk
readSimpleCommand
"echo `#comment`
\\\n
bar baz"
readBackTicked
=
called
"backtick expansion"
$
do
readQuotedBackTicked
=
readBackTicked
True
readUnquotedBackTicked
=
readBackTicked
False
readBackTicked
quoted
=
called
"backtick expansion"
$
do
id
<-
getNextId
startPos
<-
getPosition
backtick
...
...
@@ -954,6 +957,7 @@ readBackTicked = called "backtick expansion" $ do
return
$
T_Backticked
id
result
where
unEscape
[]
=
[]
unEscape
(
'
\\
'
:
'"'
:
rest
)
|
quoted
=
'"'
:
unEscape
rest
unEscape
(
'
\\
'
:
x
:
rest
)
|
x
`
elem
`
"$`
\\
"
=
x
:
unEscape
rest
unEscape
(
'
\\
'
:
'
\n
'
:
rest
)
=
unEscape
rest
unEscape
(
c
:
rest
)
=
c
:
unEscape
rest
...
...
@@ -1021,7 +1025,7 @@ suggestForgotClosingQuote startPos endPos name = do
parseProblemAt
endPos
InfoC
1079
"This is actually an end quote, but due to next char it looks suspect."
doubleQuotedPart
=
readDoubleLiteral
<|>
readDoubleQuotedDollar
<|>
readBackTicked
doubleQuotedPart
=
readDoubleLiteral
<|>
readDoubleQuotedDollar
<|>
read
Quoted
BackTicked
readDoubleQuotedLiteral
=
do
doubleQuote
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录