We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
这个提示是来自 ShellCheck 工具,它是一个用于检查 shell 脚本的静态分析工具。SC2086 是其中的一个警告代码,解释如下:
SC2086: Double quote to prevent globbing and word splitting.
意思是:应该使用双引号包裹变量,以避免文件名通配符(globbing)和单词分割(word splitting)的问题。如果在 shell 脚本中未对变量进行适当的双引号处理,shell 可能会错误地处理某些字符,导致意外的行为。
假设你有以下代码:
rm $file
这里的 $file 没有加双引号。如果 $file 包含空格或特殊字符,shell 会将其拆分成多个部分。例如,如果 $file 是 "my file.txt",shell 会将它拆分为 my 和 file.txt,并且 rm 命令可能会报错,或者删除错误的文件。
$file
"my file.txt"
my
file.txt
rm
此外,如果 $file 包含通配符(如 *),shell 可能会展开这个通配符,误操作多个文件。
*
使用双引号包裹变量,确保 shell 处理整个变量值作为一个整体,而不是分割它或解析通配符。
rm "$file"
这样,即使$file包含空格或特殊字符,rm 仍会正常处理整个文件名。
SC2086 警告提醒你,应该对变量使用双引号,防止:
SC2086
globbing:即 shell 解析通配符(如 *,? 等)。 word splitting:即 shell 把未加引号的变量内容按空格或其他分隔符拆分成多个单词。 通过加双引号,可以避免这些潜在的错误。
?
The text was updated successfully, but these errors were encountered:
No branches or pull requests
这个提示是来自 ShellCheck 工具,它是一个用于检查 shell 脚本的静态分析工具。SC2086 是其中的一个警告代码,解释如下:
问题描述:
SC2086: Double quote to prevent globbing and word splitting.
意思是:应该使用双引号包裹变量,以避免文件名通配符(globbing)和单词分割(word splitting)的问题。如果在 shell 脚本中未对变量进行适当的双引号处理,shell 可能会错误地处理某些字符,导致意外的行为。
具体场景:
假设你有以下代码:
rm $file
这里的
$file
没有加双引号。如果$file
包含空格或特殊字符,shell 会将其拆分成多个部分。例如,如果$file
是"my file.txt"
,shell 会将它拆分为my
和file.txt
,并且rm
命令可能会报错,或者删除错误的文件。此外,如果
$file
包含通配符(如*
),shell 可能会展开这个通配符,误操作多个文件。正确的做法:
使用双引号包裹变量,确保 shell 处理整个变量值作为一个整体,而不是分割它或解析通配符。
rm "$file"
这样,即使
$file
包含空格或特殊字符,rm
仍会正常处理整个文件名。总结:
SC2086
警告提醒你,应该对变量使用双引号,防止:globbing:即 shell 解析通配符(如
*
,?
等)。word splitting:即 shell 把未加引号的变量内容按空格或其他分隔符拆分成多个单词。
通过加双引号,可以避免这些潜在的错误。
The text was updated successfully, but these errors were encountered: