ShellCheck 警告:“删除周围的 $() 以避免执行输出。[SC2091]”
Posted
技术标签:
【中文标题】ShellCheck 警告:“删除周围的 $() 以避免执行输出。[SC2091]”【英文标题】:ShellCheck warning: "Remove surrounding $() to avoid executing output. [SC2091]" 【发布时间】:2018-05-20 12:43:49 【问题描述】:我的脚本中有以下命令集:
message="Secure copying file $remoteHost"
backupLogOutput "Info $message"
$(scp "$file" "$remoteUser"@"$remoteHost":"$remotePath") >> "$BACKUPLOG"
backupErrorHandler "$?" "$message"
ShellCheck 在 scp 行 (3) 上给我警告:
删除周围的 $() 以避免执行输出。 [SC2091]
脚本有效。我确实想执行输出。我应该忽略这个警告还是应该以不同的方式编写 scp 行?
【问题讨论】:
cmets 防止执行任意输出,实际上$(..)
之间的命令就像在反引号之间,它被扩展为输出,然后shell 将这个输出分成命令和参数,试试$(echo "/bin/ls -l")
【参考方案1】:
我认为您实际上并不想执行 scp
输出的内容 - 它看起来更像是您只是想复制一个文件:
scp "$file" "$remoteUser"@"$remoteHost":"$remotePath" >> "$BACKUPLOG"
【讨论】:
以上是关于ShellCheck 警告:“删除周围的 $() 以避免执行输出。[SC2091]”的主要内容,如果未能解决你的问题,请参考以下文章
调整语法检查器 shellcheck 的突出显示颜色(带有合成和病原体)