在shell脚本的当前目录下面,存在一个result.txt文件。文件内容存放了格式如下。
nihao false 1541410872156
kankan false 1541410872163
根据空格区分,第一个是服务名称,第二个是服务运行状态,第三个是时间戳。
每一行代表一个服务运行状态。
首先第一步,shell按行读取文件内容
cat result.txt | while read line
do
#命令行内容
echo $line
done
第二步,根据行的内容使用awk进行分割然后处理。
cat result.txt | while read line
do
#命令行内容
project_name=$(echo $line | awk '{print $1}');
result=$( echo $line | awk '{print $2}');
time=$( echo $line | awk '{print $3}');
if [ "$result" == "false" ]; then
echo "业务成功"
echo $result $project_name $time
else
echo "业务失败"
echo $result $project_name $time
fi
done
需要注意的是:
-
result=$( echo $line | awk ‘{print $2}’) 将输出的内容转为变量,输出内容加圆括号
-
project_name=$(echo $line | awk ‘{print $1}’) 这一条命令行中,那个赋值=左右不能有空格
-
if [ “$result” == “false” ]; 中括号的判断条件与中括号之间要有空格,中括号后要有分号结尾
-
if条件内判断字符串是否相等不能使用 if [ “$result” eq “false” ]; eq, lt等是对于数字比较的,不用于字符串比较。应该直接使用等于号去表示 。
鉴于水平有限,可能存在错误,希望不吝指出 email: [email protected]