【问题标题】:ShellCheck warning: "Remove surrounding $() to avoid executing output. [SC2091]"ShellCheck 警告:“删除周围的 $() 以避免执行输出。[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")

标签: bash shellcheck


【解决方案1】:

我认为您实际上并不想执行 scp 输出的内容 - 它看起来更像是您只是想复制一个文件:

scp  "$file" "$remoteUser"@"$remoteHost":"$remotePath"  >> "$BACKUPLOG"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多