1
iBugOne 2021-05-16 08:39:49 +08:00 1
grep $mysql_port 你没定义变量
|
3
lokamir OP @iBugOne
问一下,这句 mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l` 没有执行成功,后面判断为什么还是进行下去了 |
4
yuanmomo 2021-05-16 09:36:42 +08:00 via iPhone 4
@lokamir 脚本前面加上
######## set bash configurations # 命令返回非 0 时,就退出 set -o errexit # 管道命令中任何一个失败,就退出 set -o pipefail # 遇到不存在的变量就会报错,并停止执行 set -o nounset # 在执行每一个命令之前把经过变量展开之后的命令打印出来,调试时很有用 #set -o xtrace |
5
iBugOne 2021-05-16 10:08:09 +08:00
你这个脚本写得也太乱了吧
if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; Shell 里所有参数都是空格分隔的,然后 == 是字符串比较(而且应该是用一个 =),所以你的判断条件就变成了 if [ "[$mysql_ps" = "0]" -o "[$mysql_listen" = "0]" ]; 显然这两个字符串都不可能相等,所以 if 里面的错误处理就没执行 正确的写法是 if [ "$mysql_ps" -eq 0 -o "$mysql_listen" -eq 0 ]; 建议写完脚本用 shellcheck 或者 https://www.shellcheck.net/ 跑一下,能省很多事 |
6
julyclyde 2021-05-17 12:31:15 +08:00
而且“判断是否运行”也没什么意义啊
|