今天遇到一个问题:单独一个一个运行脚本没问题,如果同时运行两个脚本就会报错。
第一个脚本抓取第一个月的数据的和与平均值 第二个是第二个月的和与平均值。
其中脚本1如下。
vim saixuanbakc2.sh
[root@localhost opt]# vim saixuanbakc2.sh
#!/bin/bash
for j in `cat /opt/yu.txt -v `
do
a=`ls /opt/aaa202101/*.txt` # 取某月的值
m=0
g=1
for i in $a
do
>c.txt && grep $j $i >> c.txt
#[ $? -ne 0 ] && echo $j 在 $i 没数据 && continue
if [ $? -eq 0 ];then
# && echo $j 在 $i 没数据 && continue
d=`awk '{print $2}' c.txt`
let m+=$d
let g++
else
echo $j 在 $i 没数据 && continue
fi
#done
done
echo $j 1月总和是 $m >> he_m_2
echo $j 1月平均值是 $[$m/$g] >> eveg_m_2
done
运行的命令是
>bb2 bash saixuanbakc2.sh >>bb2 2>&1 &
然后 tal -f bb2 发现 有数据
再 cp saixuanbakc2.sh saixuanbakc3.sh
将里面的2改成3
如下:
#!/bin/bash
for j in `cat /opt/yu.txt -v `
do
a=`ls /opt/aaa202103/*.txt` # 取某月的值
m=0
g=1
for i in $a
do
>c.txt && grep $j $i >> c.txt
#[ $? -ne 0 ] && echo $j 在 $i 没数据 && continue
if [ $? -eq 0 ];then
# && echo $j 在 $i 没数据 && continue
d=`awk '{print $2}' c.txt`
let m+=$d
let g++
else
echo $j 在 $i 没数据 && continue
fi
#done
done
echo $j 3月总和是 $m >> he_m_3
echo $j 3月平均值是 $[$m/$g] >> eveg_m_3
done
奇怪的是
然后再 tail -f bb3 发现报错 let +=
再 tail -f bb2 也报同样的错。
如图: 当时脚本有一些注释 所以let+= 当时 在第16行。
d=`awk '{print $2}' c.txt`这个是否同一个文件?如果是同一个文件,那两个程序可能同时争夺这个文件资源
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632