Centos7 Shell脚本提示参数太多

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos7 Shell脚本提示参数太多相关的知识,希望对你有一定的参考价值。

我想写一个判断mysql如果停止运行就退出keepalived的脚本,脚本命令如下:
#!/bin/bash

num='ps -ef|grep "mysql"|grep -v "grep"|grep -v "check"|wc -l'
if [ $num -eq 0 ]; then
systemctl stop keepalived
fi

运行的时候提示参数太多,本人新手,不知道哪出问题

参考技术A 你在while[xxx]之前将while中括号内的东西(xxx)打印一下看就明白了:
echo xxx
可能原因是其中有参数带有特殊字符,如”[”、“]“等,你可以这样引用参数:
while [ $var = $var2 ]
do
...
如果还可能有空串的话,这样万无一失:
while [ ”X$var“ = "X$var2" ]
do
...
X是随便拼上去的一个字符,目的就是保证你那个串不会是空的
参考技术B num=后面的命令用反引号`而不是单引号'引起来本回答被提问者采纳 参考技术C 一看就没用过shell,chmod +x 要给执行权限追问

[root@localhost keepalived]# ls -l
总用量 8
-rwxr-xr-x. 1 root root 114 1月 15 09:10 check_mysql.sh
-rw-r--r--. 1 root root 889 1月 15 08:08 keepalived.conf
有给执行权限的

CentOS6 Shell脚本/bin/bash^M: bad interpreter错误解决方法

在windows下保存了一个脚本文件,用ssh上传到centos,添加权限执行nginx提示没有那个文件或目录。
shell脚本放到/etc/init.d/目录下,再执行/etc/init.d/nginx,提示多了这句/bin/bash^M: bad interpreter。
网上找了资料才知道
如果这个脚本在Windows下编辑过,就有可能被转换成Windows下的dos文本格式了,这样的格式每一行的末尾都是以\r\n来标识,它的ASCII码分别是0x0D,0x0A。如果你将这个脚本文件直接放到Linux上执行就会报/bin/bash^M: bad interpreter错误提示。
解决方法很简单,首先你先要检查一下看看你的脚本文件是不是这个问题导致的,用vi命令打开要检查的脚本文件,然后用
:set ff?
命令检查一下,看看是不是dos字样,如果是dos格式的,继续执行
:set ff=unix
然后执行
:qw
保存退出即可。

转载自:https://my.oschina.net/chunto/blog/227003











以上是关于Centos7 Shell脚本提示参数太多的主要内容,如果未能解决你的问题,请参考以下文章

shell 脚本传参

Shell脚本

学习Shell脚本

shell脚本加密形式

[shell]简单的shell提示和参数脚本

编写一个shell脚本,可以输入2个参数,并将它们的乘积显示出来