if test -z "`cat filename`" shell之too many arguments的解决方法二: 今天偶尔因解决一个小问题,遇到了一奇怪的问题“[ ]”和"[[ ]] "的不一样的效果,总结如下 显示一下code: if [ -z ` lsof -i:22 ` ] //这种写法会报too many arguments,改成[[ -z ` lsof -i:22 ` ]] then echo "...
linux shell脚本编程问题,提示too many argumentsecho "enter a directory name:"read aif [ –d a –a –w a ]then files_deleted=0files_remaining=0for c in `ls a`doecho "wish to delete file c?"read ansif [ ans = 'y' ]then
linuxbash中toomanyarguments问题的解决⽅法 判断⼀个⽂件的内容是不是为空,使⽤语句:if test -z `cat filename`当filename为空或者只有⼀⾏没有空格的字符串的时候,⼀切正常,反之,则会报:too many arguments,甚⾄是: binary operator expected之类的错误。原因分析:filename中的空格回车等...
然后我输入改为[[$pid]]后,再执行脚本,就成功了,代码如下: #!/bin/bash pid=`ps -ef|grep lampp| grep -v grep|awk '{print $2}'` if [[ $pid ]] then kill -9 $pid echo 'lampp is stoped...' else echo "lampp is not running..." fi 最后才查到和版本的通用性是有关系的,更简单的...
第4行until [ $a -gt 90 ]这句,代入$a后变为 until [ 已用 13 10 0 -gt 90 ],语法不正确。如果只是想检查有没有超过90%的分区,可以这样改下:!/bin/bash a=`df | awk '{if(NR > 1) print $5}' | sed 's/%//g'`echo $a for num in $a do if [ $num -gt...
你这个条件应该是有问题,你看看 cat /etc/passwd|grep mysql 的实际输出吧。这个估计输出不符合 -z 识别的格式要求。grep 是输出一整行数据的。passwd 文件内容一行的格式可能影响了 -z 的识别。你试试加上 " 把变量包括起来看看。--- 晕,刚发现原来是楼主引号弄错了。
问题一:pmonstat='ps -ef | grep ora_pmon | grep -v grep | wc -l' ,应该用反单引号 问题二:select status from v\\ $instance; v\\ $instance不能有空格
估计是这个问题 [ -d $a -a -w $a ]你这个逻辑是正确的,可能的问题就是有些字符可能有错,你在仔细检查下 另外可以根据报错信息定位
tou='expr $ji + $tu '外面的不是单引号,是反引号(键盘左上角esc下面的那个)程序里所有expr相关的语句都错了。
判断表达式,比较操作符两边都要有空格,右边的漏掉啦~~还有,没有or这种写法,只有 -a (And) 或 -o (Or)此外,你不管判断成立与否,都是 echo $ANSWER,那还要判断干啥呢?不是很明白你的意图。echo "输入Y或N"read ANSWER if [ "$ANSWER" = "Y" -o "$ANSWER" = "y" ]then echo $...