我是 shell 脚本新手。我编写了下面的脚本来将“top”命令的输出保存到文件中:cpu.csv 和 mem.csv。但文件并未创建。下面我的脚本中的任何错误:
#!/bin/bash
TIMESTAMP=$(date +"%Y-%m-%d-%H:%M:%S")
top -b -n 1 &
CPU_LINE=$(grep "Cpu(s)")
MEM_LINE=$(grep "KiB Mem")
echo "$TIMESTAMP,$CPU_LINE" >> cpu.csv
echo "$TIMESTAMP,$MEM_LINE" >> mem.csv
我希望看到“top”命令的“Cpu(s)”行被保存到 cpu.csv 文件中,并且时间戳在前面。
您的 grep 命令不完整。您需要将您的模式应用于某些东西,通常是文件或来自标准输入。
您可以通过管道连接
|
这两个命令,将一个命令的标准输出连接到另一个命令的标准输入。
例如:
CPU_LINE=$(top -b -n 1 | grep "Cpu(s)")
这将使用您期望的数据创建 CPU_LINE 变量,然后输出到您的文件。