📅  最后修改于: 2023-12-03 15:27:11.725000             🧑  作者: Mango
在编写 shell 脚本时,我们经常需要检查命令的输出是否符合预期。为了方便快捷地进行输出检查,我们可以编写一个用于检查文件输出的 shell 脚本。
下面是这个 shell 脚本的实现思路:
下面是这个 shell 脚本的具体实现代码:
#!/bin/bash
# 接收两个参数,一个是命令行命令,另一个是期望的输出文件
cmd=$1
expected_output=$2
# 执行命令行命令,将输出重定向到一个临时文件中
temp_file=$(mktemp)
eval "$cmd > $temp_file"
# 比较实际输出文件和期望输出文件是否相同
diff_output=$(diff -u $expected_output $temp_file)
# 如果相同,删除临时文件并输出“输出正确”信息;否则输出“输出错误”信息和不同处
if [ -z "$diff_output" ]
then
rm $temp_file
echo "输出正确"
else
echo "输出错误:"
echo "$diff_output"
fi
假设我们要检查命令“ls -l”是否输出了正确的内容。我们可以先创建一个期望输出文件“expected_output.txt”,然后运行如下命令:
$ ./check_output.sh "ls -l" expected_output.txt
输出正确
如果期望输出文件与实际输出文件不同,则输出错误信息和不同处:
$ ./check_output.sh "ls -l" wrong_output.txt
输出错误:
--- expected_output.txt 2021-10-14 17:56:27.380443498 +0800
+++ /tmp/tmp.wPv6xkUzkH 2021-10-14 17:56:44.704464737 +0800
@@ -1,5 +1,5 @@
total 0
drwxr-xr-x 2 user group 40 Oct 14 17:56 dir1
-drwxr-xr-x 2 user group 40 Oct 14 17:56 dir2
+drwxr-xr-x 2 user group 40 Oct 14 17:56 dir3
-rw-r--r-- 1 user group 0 Oct 14 17:56 file1
本文介绍了如何编写一个用于检查文件输出的 shell 脚本,实现了对输出结果的一致性检查,为我们的编程工作提供了方便和安全的保障。