聊天服务器 Rocketchat with QianWen 202509

shi gan sha de sed -E 's/^[[:space:]]*listen[[:space:]]+([^;]+);?.*$/\1/' | \

PHPer 2025-09-26 9 0 0

20250926

`| \` 是 **Bash 脚本中的“行继续符”**,意思是:

> “这行还没结束,下一行是它的延续。”

***

### ✅ 详细解释

你写的:

<pre style="background: none"><code class="language-bash" data-language="bash" identifier="2a747c62ec71481895a43d57eff84eb2-0" index="0" total="8">grep -E "^\s*listen" "$conf_file" | \

sed -E 's/^[[:space:]]*listen[[:space:]]+([^;]+);?.*$/\1/' | \

while read -r line; do

...

done | \

sort -u | \

tr '\n' ' ' | \

sed 's/ $//' || echo ""</code></pre>

这里的每一个 `| \` 都表示:

* `|`:管道,把前一个命令的输出传给下一个命令

* `\`:换行符,告诉 shell “命令还没完,继续读下一行”

***

### ✅ 为什么需要它?

因为如果不加 `\`,Bash 会认为每行是一个独立命令。

比如:

<pre style="background: none"><code class="language-bash" data-language="bash" identifier="2a747c62ec71481895a43d57eff84eb2-1" index="1" total="8">grep ... |

sed ... |

while ...</code></pre>

Bash 会报错:

<pre style="background: none"><code identifier="2a747c62ec71481895a43d57eff84eb2-2" index="2" total="8">语法错误:未预期的符号 `|'</code></pre>

因为 `grep ... |` 是个不完整的管道。

***

### ✅ 等价于(去掉 `\`)

如果你写成一行(不推荐,太长):

<pre style="background: none"><code class="language-bash" data-language="bash" identifier="2a747c62ec71481895a43d57eff84eb2-3" index="3" total="8">grep -E "^\s*listen" "$conf_file" | sed -E 's/^[[:space:]]*listen[[:space:]]+([^;]+);?.*$/\1/' | while read -r line; do ...; done | sort -u | tr '\n' ' ' | sed 's/ $//' || echo ""</code></pre>...

立即注册
更新于:2025-09-26 09:36:28
    您需要登录后才可以评论。 立即注册
    相关内容

    Shadowsocks服务原理

    为何 shadowsocks 弃用一次性验证 (OTA)

    推荐内容

    怎样使用V2Ray代理和SSTap玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩...

    sstap游戏代理教程 从此玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩虹六...

    BT磁力搜索网站汇总和找不到的资源

    什么是磁力链接,您如何使用?

    Z-Library:全球最大的数字图书馆/含打不开的解决方案/镜像

    使用V2Ray的mKCP协议加速游戏

    v2rayN已停止工作

    【车险课堂】什么是无赔款优待系数ncd,你“造”吗?