1.脚本内容
# cat /usr/local/sbin/redis_memory.sh #!/bin/bash a=$(/usr/local/redis/bin/redis-cli -h 127.0.0.1 -a wang.123 -p 6479 info memory |sed -n '/used_memory_human/p' |awk -F: '{print $2}' |sed 's/[a-Z]//g') if [[ `echo "$a > 5.10"|bc` -eq 1 ]]; then echo -e "Redis Memory usage exceeds limit!" else exit fi
2.报错
(standard_in) 1: illegal character: ^M
3.加上执行过程
sh -x /usr/local/sbin/redis_memory.sh ++ /usr/local/redis/bin/redis-cli -h 127.0.0.1 -a wang.123 -p 6479 info memory ++ sed -n /used_memory_human/p ++ awk -F: '{print $2}' ++ sed 's/[a-Z]//g' + a=$'2.36\r' > 5.10''2.36 ++ bc (standard_in) 1: illegal character: ^M
4.可见变量$a出现了"\r",使用cat -et- 显示不能打印的控制字符:变量a中多了一个回车符
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -a wang.123 -p 6479 info memory |sed -n '/used_memory_human/p' |awk -F: '{print $2}' |sed 's/G//g' |cat -et - 4.80^M$
5.改进,在获取变量a获取的时候删除换行符
a=$(/usr/local/redis/bin/redis-cli -h 127.0.0.1 -a wang.123 -p 6479 info memory |sed -n '/used_memory_human/p' |awk -F: '{print $2}' |sed 's/[a-Z]//g' |tr -d "\r")
我来说说