为什么不能同时起两个脚本,同时启动会报错 let+=

今天遇到一个问题:单独一个一个运行脚本没问题,如果同时运行两个脚本就会报错。

第一个脚本抓取第一个月的数据的和与平均值  第二个是第二个月的和与平均值。

其中脚本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