shell报错:-bash: [: ==: 期待一元表达式 解决方法 ([: ==: unary operator expected)
shell报错:-bash: [: ==: 期待一元表达式 解决方法 ([: ==: unary operator expected)
问题背景:
- if [ $flag == '1' ]; then
- mode='--dev'
- else
- mode='--test'
- fi
如上代码, 执行shell报错:line 1: [: ==: unary operator expected【翻译过来就是:-bash: [: ==: 期待一元表达式】
解决方案:
- if [ "$flag" == '1' ]; then
- mode='--dev'
- else
- mode='--test'
- fi
问题说明:
1. 当 if 语句中使用 [ ] 条件修饰符时, $flag 变量必须加上引号。
2. 当 if 语句中使用 [[]] 条件修饰符时,$flag 变量的引号可有可无。
我通过第二种方法解决:
debugprint()
{
if [[ $debugswitch -eq 1 ]]; then
echo "$1"
else
echo "debug off" > /dev/null
fi
}
########################sleep_when_quarter################################
sleep_when_quarter()
{
local currentminute
local timeseconds=10
local curtime
if [[ $sleepswitch -eq 1 ]]; then
......
#!/bin/bash
#
#Name:del_mr_temp_file
#Date:2018-09-11
#Author:Created by shiminhua
#Company:Datang Mobile Co., Ltd
#Discription:This script delete old mr temp files.
########################################################################## ###########################################################################
if [ -f ~/.bash_profile ];then
. ~/.bash_profile
fi
##########################################################################
MRDIR="/export/home/omcrftp/" MRFILE1="${MRDIR}mrfile"
MRFILE2="${MRDIR}mrfile/success"
########################debugprint################################
debugswitch=0
sleepswitch=0
debugprint()
{
if [ $debugswitch -eq 1 ]; then #这里应改为[[]]
echo "$1"
else
echo "debug off" > /dev/null
fi
}
########################sleep_when_quarter################################
sleep_when_quarter()
{
local currentminute
local timeseconds=10
local curtime if [ $sleepswitch -eq 1 ]; then #这里应改为[[]] return 0
fi curtime=`date +%Y-%m-%d\ %H:%M:%S`
debugprint "Enter func:sleep_when_quarter, time is: $curtime" while [ 1 -eq 1 ]
do
currentminute=`date +%M` if [ $currentminute -gt 22 ] && [ $currentminute -lt 27 ]; then
break # break表示跳出死循环,执行后面的代码,否则一直在死循环中
fi if [ $currentminute -gt 37 ] && [ $currentminute -lt 42 ]; then
break
fi if [ $currentminute -gt 52 ] && [ $currentminute -lt 57 ]; then
break
fi debugprint "sleep...."
sleep $timeseconds done debugprint "Leave func:sleep_when_quarter."
}
########################del_old_files################################ del_old_files()
{
debugprint "dir = $1" for file_a in ${1}/*; do sleep_when_quarter temp_file1=`basename $file_a` if [ -f $file_a ]; then reserver=`date +%Y%m%d%H` debugprint "filename is [$temp_file1]" if [[ $temp_file1 != *${reserver}* ]]; then
debugprint "delete filename is [$temp_file1]"
rm -f $file_a >/dev/null 2>&1 #丢弃 标准、错误输出 真正起作用的删除命令
fi
fi
done
} ########################main################################
WDNAME=del_mr_temp_file.sh
####################declare var end####################################### if [ "x$1" = "x" ];then
debugswitch=0
else
debugswitch=$1 fi if [ "x$2" = "x" ];then
sleepswitch=0
else
sleepswitch=$2
fi PID=$$
WD1=`ps -ef|grep "$WDNAME"|grep -v grep|wc -l` #grep -v grep 就是查找不含有 grep 字段的行
WD2=`ps -ef|grep "$WDNAME"|grep -v grep|grep $PID|wc -l`
echo "WD1=$WD1"
echo "WD2=$WD2"
echo "PID=$PID" # 这个判断的意义是,如果脚本已经运行,则不再运行第二次。避免脚本运行多次,产生多个死循环,影响系统速度
if [ ! "$WD1" -eq "$WD2" ]; then
echo "The script is live. please type Enter to exit!"
echo "`ps -ef|grep "$WDNAME"|grep -v grep`"
exit 0
fi while [ 1 -eq 1 ]
do
del_old_files $MRFILE1 del_old_files $MRFILE2 sleep 300 done
参考:
shell中>/dev/null 2>&1
https://www.cnblogs.com/520playboy/p/6275022.html
linux应用之test命令详细解析
https://www.cnblogs.com/tankblog/p/6160808.html
shell报错:-bash: [: ==: 期待一元表达式 解决方法 ([: ==: unary operator expected)
http://www.blogdaren.com/post-2189.html
Bash脚本的空格和“期待一元表达式”错误
https://blog.csdn.net/qinxiandiqi/article/details/41626215
grep -v grep反向查找(查找不含有 grep 字段的行)
https://blog.csdn.net/weixin_36667844/article/details/78999489
shell报错:-bash: [: ==: 期待一元表达式 解决方法 ([: ==: unary operator expected)的更多相关文章
- vs2010一运行就报错deven.exe assert failure 解决方法,卸载系统中.netFramework最新版本的(简体中文)
vs2010一运行就报错deven.exe assert failure 解决方法,卸载系统中.netFramework最新版本的(简体中文)
- AFNetwork2.0在报错1016,3840的解决方法及一些感悟
最近在学习AFNetwork,非常好的网络框架,能节省很多时间.不过请求网络数据时报错1016,3840. 这两个错误网上解决方法很多,http://blog.csdn.net/huifeidexin ...
- 阿里云安装kubernetes-UI报错endpoints \"kubernetes-dashboard\" not found解决方法
问题:阿里云ECS安装kube-ui v5后,访问 http://master_ip:8080/ui/跳转到http://master_ip:8080/api/v1/proxy/namespaces/ ...
- 转)VCSA 6.5重启无法访问,报错“503 Service Unavailable”的解决方法
1. 问题 重启vcenter,登陆vsphere client,提示 “503 Service Unavailable (Failed to connect to endpoint: [N7Vmac ...
- ExtJs6编译之后上线报错无法查看到的解决方法
最近Extjs编译后部署遇到了一个错误c is not a constructor,报错位置在app.js里,这根本没法找 解决方法:用命令sencha app build testing 编译之后, ...
- Arcgis Javascript中geometryEngine报错’hq‘of undefined的解决方法
这个问题困扰了我一个星期,原因是使用geomagicbuffer时候,有的线可正常使用,有的就直接报错,一直没有解决,后来发现是api自己的bug导致的 干脆直接读代码,在geometryEngine ...
- 网页视频不能自动播放?HTML5 video报错Uncaught (in promise) DOMException解决方法
话说发哥四年前写了一个网页,如上图效果,实际网址http://pano.z01.com ,话说做好时是正常的,突然某一天,客户说你这个网站动画不见了,这是什么原因? 结果检查脚本一切正常. 其实也不是 ...
- Github上LeakCanary编译报错CreateProcess error=2的解决方法
现象说明: 从github上拉下LeakCanary编译时报错 CreateProcess error=2, ϵͳÕҲ»µ½ָ¶ 原因分析: 该现象是由于Windows中Gradle调用命令未加cmd ...
- Eclipse导入web项目报错找不到HttpServletRequest解决方法
解决方法 右击项目-> Properties -> Java Build Path -> Add Library -> Server Runtime -> next -& ...
随机推荐
- nodejs之路由
声明:在写nodejs代码的时候,很多模块可以封装保存起来,以后的项目都会用到. 1.路由模块 var url=require('url'); //封装方法改变res 绑定res.send() fun ...
- Nova 启动虚拟机流程解析
目录 文章目录 目录 前言 从请求说起 nova-api service 阶段 前言 Nova 启动虚拟机的东西太多,持续更新- 从请求说起 无论是通过 Dashboard 还是 CLI 启动一个虚拟 ...
- Python基本语法_运算符详解
目录 目录 前言 软件环境 身份运算符 算术运算符 比较运算符 位移运算符 自变运算符 位运算符 逻辑运算符 成员关系运算符 Python真值表 最后 前言 在前面的博文介绍了Python的数据结构之 ...
- TestNG学习笔记 一
一. 介绍 TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器). 编写一个测试的过程有 ...
- 【HANA系列】SAP HANA使用XS和HTTP创建proxy
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA使用XS和HTT ...
- LeetCode.1021-删除最外面的括号(Remove Outermost Parentheses)
这是小川的第380次更新,第408篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第242题(顺位题号是1021).有效的括号字符串为空(""),&qu ...
- ubuntu18.04安装Vulhub
环境 虚拟机vmware ubuntu18.04 已安装docker 1.安装docker-compose 前提:Docker-compose基于Python开发,需要pip Docker-compo ...
- [ASP.NET] 数据绑定以及Container.DataItem的具体分析 [转]
灵活的运用数据绑定操作 绑定到简单属性:<%#UserName%> 绑定到集合:<asp:ListBox id="ListBox1" ...
- 性能库 Oracle数据库 连接不上问题的解决
今天性能库的centos 上面的oracle18c 数据库连接不上了 这里进行了一次简单处理 针对不同问题进行说明: 1. 实例时 blocked 的状态 问题现象: LSNRCTL> stat ...
- Fescar使用(资料)
fescar源码走读1:业务调用方 https://zhuanlan.zhihu.com/p/54659540 fescar源码走读2:fescar服务端 https://zhuanlan.zhi ...