将我的 bash 脚本的输出存储在 .txt 文件中

Store output from my bash script in a .txt file

我想将我的脚本的输出存储在一个文件中,但是不能。

这是:

#!/bin/bash

if [ "" == "" ]
then
echo "Te falta especificar una dirección ip"
echo "Syntax esperado: ./hostDiscovery.sh <ip>"

else
for ip in `seq 1 254`; do
ping -c 1 .$ip | grep "64 bytes" | cut -d " " -f 4 | tr -d ":" | tee ip.txt &
done
fi

问题是创建的文件没有数据。它是空白的。

每次调用 tee 时,您都在覆盖 ip.txt。

尝试调用 tee -a 进行追加。

男士 T 恤了解详情

要快速回答您的问题,只需将最后一个管道 ... -d ":" | tee ip.txt & 替换为 ... -d ":" >> ip.txt &

  • >> 语法将附加到 ip.txt。您也可以使用 tee -a 追加,但这也会打印到标准输出。
  • 如果您想确保每次 运行 脚本时都清除该文件,您需要:> ip.txt 在脚本顶部清除 ip.txt.

您的新脚本可能如下所示:

#!/bin/bash

if [ "" == "" ]; then
    echo "Te falta especificar una dirección ip"
    echo "Syntax esperado: ./hostDiscovery.sh <ip>"
else
    > ip.txt
    for ip in `seq 1 254`; do
        ping -c 1 .$ip | grep "64 bytes" | cut -d " " -f 4 | tr -d ":" | tee -a ip.txt &
    done
fi

虽然我对这个剧本有很多话要说。看起来您正在尝试 ping 一个范围内的所有 IP 地址以测试它们是否 up/alive。您可能需要查看 nmap

例如nmap -sP 192.168.1.1-254