设为首页收藏本站

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 120|回复: 12

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

[复制链接]

42

主题

235

回帖

664

积分

高级会员

积分
664
发表于 2020-9-21 16:58:41 | 显示全部楼层 |阅读模式
本帖最后由 2bitO 于 2020-9-22 13:45 编辑

Update on 2020922 11:07 AM:
感谢 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-18 10:51:40
备份花费时间:0秒
备份文件大小:Unknown
全量备份状态:未执行


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

使用道具 举报

14

主题

295

回帖

698

积分

高级会员

积分
698
发表于 2020-9-21 16:59:44 | 显示全部楼层
改这种祖传代码,你居然只给10元?
回复

使用道具 举报

42

主题

235

回帖

664

积分

高级会员

积分
664
 楼主| 发表于 2020-9-21 17:01:41 | 显示全部楼层

aria2net 发表于 2020-9-21 16:59

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

不清楚行情,大佬开个价
回复

使用道具 举报

7

主题

633

回帖

1323

积分

金牌会员

积分
1323
发表于 2020-9-21 16:59:00 | 显示全部楼层
十块钱太贵了太贵了
回复

使用道具 举报

70

主题

588

回帖

1430

积分

金牌会员

积分
1430
发表于 2020-9-21 17:06:58 | 显示全部楼层
exit 500改成0-255
回复

使用道具 举报

42

主题

235

回帖

664

积分

高级会员

积分
664
 楼主| 发表于 2020-9-21 17:27:03 | 显示全部楼层

ABCHINA 发表于 2020-9-21 17:27

exit 500改成0-255

还是不行
xtrabackup: Transaction log of lsn (1167337407968) to (1167389979285) was copied.
200921 00:16:59 completed OK!
+ '\''['\'' 1 -lt 1 '\'']'\''
+ '\''['\'' '\''!'\'' -d /backups/full/2020_09_20 '\'']'\''
+ case $1 in
+ backup_result=成功"
                           }
                         }'
{"errcode":0,"errmsg":"ok"}+ pushd /backups/
/backups ~
+ find ./full ./inc1 ./inc2 ./inc3/ ./inc4 ./inc5 ./inc6 -depth -maxdepth 1 -type d -mtime +14 -exec rm -fr '{}' ';'
+ popd


数据库备份信息:

备份结果:Unknown
备份开始时间:2020-09-21 17:44:51
备份花费时间:0秒
备份文件大小:Unknown
全量备份状态:未执行
回复

使用道具 举报

17

主题

433

回帖

1015

积分

金牌会员

积分
1015
发表于 2020-9-21 17:45:31 | 显示全部楼层
成功失败1和0表示就行了吧。中文会不会容易有问题。显示的时候根据1和0判断成功还是失败
回复

使用道具 举报

24

主题

257

回帖

684

积分

高级会员

积分
684
发表于 2020-9-21 17:27:00 | 显示全部楼层
send_msg "/backups/logs/backup_info_$today.log" 改成 send_msg

回复

使用道具 举报

56

主题

596

回帖

1472

积分

金牌会员

积分
1472
发表于 2020-9-21 17:58:19 | 显示全部楼层
                get_script_run_time
                curl 'http://oapi.dingtalk.com/robot/send?access_token=***' \
                  -H 'Content-Type: application/json' \
                  -d '{"msgtype": "text",
                          "text": {
                                 "content": "数据库备份信息:\n\n备份结果:'"$backup_result"'\n备份开始时间:'"$backup_start_time"'\n备份花费时间:'"$backup_used_time"'秒\n备份文件大小:'"$backup_file_size"'\n全量备份状态:'"$full_backup_result"'\n\n'"$msg"'"
                           }
                         }'

这段代码剪切放到
# Delete backup files 15 days ago

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

使用道具 举报

0

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2020-9-21 18:03:40 | 显示全部楼层
没技术只能帮顶 本帖最后由 tinyfish 于 2020-9-21 18:29 编辑

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

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




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2026-3-31 06:59 , Processed in 0.017268 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表