暂无图片
shell ,mysql -u -p -e 当作变量时, 有\G ,输出异常
我来答
分享
佳佳
2023-08-13
shell ,mysql -u -p -e 当作变量时, 有\G ,输出异常
-- 直接打印结果是正常的[root@ ~]# mysql -A -hxx.xx.xx.xx -P 3306 -udba -e "show master status\G"
*************************** 1. row ***************************
             File: mysql-bin.000044
         Position: 564
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 56212ad4-3e21-11ec-ab71-00163e26f5d2:1-21267186
--脚本中有需求把他弄成 变量,然后打印出来。比如:[root@ ~]# a=`mysql -A -hxx.xx.xx.xx -P 3306 -udba -e "show master status\G"` [root@ ~]# echo $a 100 11 2022-12-15_13:59:36log.log =2023-07-27 10:52:00 a.log a.sh a.sql biglong_trx.txt binlog_status.txt db.log.20221016 exam_1.awk exam_2.awk exam_3.awk exam_4.awk go insert.log insert.sh percona-toolkit-3.3.0-1.el7.x86_64.rpm project ss5-3.8.9 ss5-3.8.9-8.tar.gz test.sh tmp.log tmp.sh 1. row 100 11 2022-12-15_13:59:36log.log =2023-07-27 10:52:00 a.log a.sh a.sql biglong_trx.txt binlog_status.txt db.log.20221016 exam_1.awk exam_2.awk exam_3.awk exam_4.awk go insert.log insert.sh percona-toolkit-3.3.0-1.el7.x86_64.rpm project ss5-3.8.9 ss5-3.8.9-8.tar.gz test.sh tmp.log tmp.sh File: mysql-bin.000044 Position: 564 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 56212ad4-3e21-11ec-ab71-00163e26f5d2:1-21267186
打印出来的不是预期的,会打印出来 本目录下的所有文件,而且结果也不是预期的\G的格式。个人感觉是,\G转义有问题,但是换成了 \\G  也是一样的。shelle大神求解。
我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
大大刺猬

是shell的问题, 加个双引号就行…
image.png

暂无图片 评论
暂无图片 有用 0
暂无图片
佳佳
题主
2023-08-14
大佬,为啥加个双引号就可以呀,是shell的bug?
大大刺猬
答主
2023-08-14
不是BUG, 严格来说是bash的自动补全的'锅' bash在遇到 tab 也就是\t 的时候会根据提示补全相关信息(一般是补全文件名, 也可以自定义命令的补全的,比如: https://github.com/ddcw/ddcw/tree/master/completion) 而 echo $aa 时, $aa会被当场N个参数传递给echo 而不是一个字符串, 也就是 echo ******** \n \t File 这种了, 遇到\t就是补全文件名了 而 echo "$aa" 时, "$aa" 就是一个字符串, 里面的\t\n之类的都是字符,而不是参数 也就是 echo "******** \n \t File"这种了, 也就是只有一个参数
严少安
暂无图片

可以不用\G,用 -E 也可以

暂无图片 评论
暂无图片 有用 3
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏