linux - 如何将一行 Bash 脚本分隔成多行?

标签 linux bash shell

所以我在 bash 终端中创建了这个 ping 扫描,但我想为此制作一个外观整洁的脚本文件:

for IPs in 192.168.0.{1..254}; do ping -c1 -W1 $IPs; done | grep -B1 "1 received" | grep "192.168.0" | cut -d " " -f2 > BashPingSweep.txt

我认为我的 for 循环是正确的,但我无法将 for 循环通过管道传输到其他 greps 并剪切然后输出。这就是我现在拥有的:

#!/bin/bash
for IPs in 192.168.0.{1..254}
do
    ping -c1 -W1 $IPs
done

grep -B1 "1 received"
grep "192.168.0"
cut -d " " -f2
> BashPingSweep.txt

最佳答案

你可以试试这个:

#!/bin/bash

for IP in 192.168.0.{1..254}
do
    ping -c1 -W1 $IP
done |
grep -B1 "1 received" |
grep "192.168.0" |
cut -d " " -f2 \
> BashPingSweep.txt

它看起来有点笨拙,但这是在多行上格式化长管道的常用方法。你也可以这样说:

for IP in 192.168.0.{1..254}
do
    ping -c1 -W1 $IP
done \
| grep -B1 "1 received" \
| grep "192.168.0" \
| cut -d " " -f2 \
> BashPingSweep.txt

这是我更喜欢的,因为它更容易看到管道的去向。

关于linux - 如何将一行 Bash 脚本分隔成多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47484338/

相关文章:

linux - 2.6.39 之前的 Linux 内核中的 O_PATH 等价物?

c - 如何在 C 中使用 libsox 更改声音文件的速度?

regex - 使用正则表达式在 linux 中重命名文件

shell - 需要从 grep 的输出中删除路径而不是文件

linux - 当我从 Perl 调用时,为什么我的 awk 单行代码不起作用?

c++ - 如何在 Xlib 应用程序中等待 VSYNC?

java - bash 脚本 : search Java STDOUT for a variable

bash - 替换分号后的字符串

mysql - MySQL Workbench 6.1 上的连接错误

linux - 如何将行字段重定向到 vars?