You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本IF语句中两个变量之间的正斜杠是什么作用?

Bash 模式替换参数扩展语法说明

你提到的${lsof_line/$c2}中的正斜杠是Bash参数扩展(也叫变量替换)中模式替换语法的分隔符,具体规则和作用如下:

语法规则

Bash的单匹配模式替换基础语法为:
${变量/匹配模式/替换值}

  • 第一个斜杠用于分隔「变量名」和「匹配模式」
  • 第二个斜杠用于分隔「匹配模式」和「替换值」
    如果省略第二个斜杠和后面的替换值,默认表示将匹配到的内容替换为空,也就是删除匹配内容。你给出的代码就是这种用法,作用是把lsof_line变量中第一个匹配$c2值的内容删掉。

结合上下文的逻辑说明

这段代码的判断语句if [ "${lsof_line/$c2}" != "$lsof_line" ],本质是用来检测lsof_line中是否包含$c2对应的IOC(威胁指示器,也就是C2服务器地址):

  • 如果lsof_line中包含$c2的内容:替换操作会删掉对应内容,得到的新值和原lsof_line值不相等,判断条件成立,触发C2服务器发现的警告日志
  • 如果lsof_line中不包含$c2的内容:替换操作没有可以匹配删除的内容,得到的新值和原lsof_line值完全相等,判断条件不成立

补充说明

  • 如果要匹配替换变量中所有符合模式的内容,需要把第一个分隔符改成两个斜杠,语法为${变量//匹配模式/替换值}
  • 该语法是Bash特有的扩展功能,不能在POSIX标准的sh脚本中使用

内容的提问来源于stack exchange,提问作者Liberator48

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:21:00