[已解决]30元求解决一个Shell脚本小Bug

分类: 日期:2020-09-30 作者:James 浏览:61

Updateon202092211:07AM:

感谢518 私信和tinyfish(11楼大佬)的解答,大佬们已帮助找到问题,目前Bug已成功解决,就是子函数后面不能接管道符,否则子函数里面的变量赋值不生效。

支付宝已转给最先私信给我的“518”大佬。 再次感谢!


最近在改前同事的备份脚本(提前说明,本人Shell菜鸡,代码惨不忍睹,大佬勿嘲)

备份代码倒是都OK,就是有一个小Bug:

废话不多说,代码先附上:

https://cowtransfer.com/s/a3f91195571444

Bug:

我用bash-x看到实际上在start_backup()函数里已经给变量赋值成功了:

backup_result="成功"

backup_file_size="700M"

但是send_msg()函数里调用上面两个函数,返回的是初始值:

backup_result="Unknown"

backup_file_size="Unknown"

最终跑起来的输出结果如下:

数据库备份信息:

备份结果:Unknown

备份开始时间:2020-09-1810:51:40

备份花费时间:0秒

备份文件大小:Unknown

全量备份状态:未执行

哪位大佬点一下怎样正确输出${备份结果}和${备份文件大小}变量值。


-----------------------------------------------------
网友回复:

引用:aria2net发表于2020-9-2116:59

改这种祖传代码,你居然只给10元?


网友回复:

引用:ABCHINA发表于2020-9-2117:27

exit500改成0-255


网友回复:

成功失败1和0表示就行了吧。中文会不会容易有问题。显示的时候根据1和0判断成功还是失败


网友回复:

send_msg"/backups/logs/backup_info_$today.log"改成send_msg


网友回复:



    get_script_run_time

    curlhttp://oapi.dingtalk.com/robot/send?access_token=***

      -HContent-Type:application/json

      -d{"msgtype":"text",

          "text":{

              "content":"数据库备份信息:

备份结果:"$backup_result"
备份开始时间:"$backup_start_time"
备份花费时间:"$backup_used_time"秒
备份文件大小:"$backup_file_size"
全量备份状态:"$full_backup_result"

"$msg""

          }

          }

这段代码剪切放到

Deletebackupfiles15daysago

前面然后跑一下我看下结果


网友回复:

找到了,start_backup$day后面不能加管道,否则变量被改掉的值不会被更新……业余小白一个,也是第一次见到这种情况

补图。测试用的网站是:https://repl.it/languages/bash/




网友回复:

引用:tinyfish发表于2020-9-2118:23

找到了,start_backup$day后面不能加管道,否则变量被改掉的值不会被更新……业余小白一个,也是第一次见...


网友回复:

引用:tinyfish发表于2020-9-2118:23

找到了,start_backup$day后面不能加管道,否则变量被改掉的值不会被更新……业余小白一个,也是第一次见...