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 -& ...
随机推荐
- centos7 禁止root远程ssh直接登录
修改/etc/ssh/sshd_config文件,将 #PermitRootLogin yes 修改为 PermitRootLogin no 查看 more /etc/ssh/sshd_confi ...
- Oracle中 ORA-12704:字符集不匹配
前言 在使用Union all连接时,若A集合中某列为nvarchar2或nvarchar类型,而B集合中无此列,用‘ ’ 来代替是会报字符集不匹配 1 select '中国','China',cas ...
- java并发编程 线程基础
java并发编程 线程基础 1. java中的多线程 java是天生多线程的,可以通过启动一个main方法,查看main方法启动的同时有多少线程同时启动 public class OnlyMain { ...
- upd通讯Recvfrom设置阻塞不起作用
把自己踩到的坑记录一下,在做UDP通讯的时候,发现自己的程序没有收数据居然也有百分之十二的cpu占用率,通过性能分析工具了解到时recvfrom函数一直在执行,虽然设置阻塞并且确认成功了, ;//阻塞 ...
- SVM之KKT条件理解
在SVM中,我们的超平面参数最终只与间隔边界上的向量(样本)有关,故称为支持向量机. 求解最优超平面,即求最大化间隔,或最小化间隔的倒数:||w||2/2,约束条件为yi(wTxi+b)>=1 ...
- C#后台正则表达式
static Regex RegPhone = new Regex(@"^((1[34578][0-9]{1}))\d{8}"); static Regex RegN ...
- 2019JAVA第九次实验报告
Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.11.8 评分等级 课程总结 1.实验代码 package Domon8; import java.awt. ...
- [转帖]Linux下批量替换文件内容方法
Linux下批量替换文件内容方法 https://www.cnblogs.com/fjping0606/p/4428850.html 刚才用到的命令 原作者写的挺好的记录一下 以后 用. 1:查找fi ...
- Statistics项目学习笔记
1. http://218.244.157.0:55443/index.html 初始访问时,弹出的窗口为index.html文件,文件有html命令组成.html展现的UI界面用的是WIN10-UI ...
- 洛谷 P3258 松鼠的新家 题解
题面 貌似这道题暴力加玄学优化就可以AC? 下面是正解: 1.树链剖分: 我们在u到v之间都放一个糖果,可以将松鼠它家u到v的糖果数都加1.每一次将a[i]到a[i+1] (a数组是访问顺序)的节点加 ...