字符串比较报错

今天要归档日志时发现要排除当日的日志不能归档,gz -9 $filename 但发现没有--exclude 选项,故选择使用判断语句进行排除特定文件名。

但使用if ..then ..fi 判断字符串是否相等时报错:

syntax error near unexpected token `then‘

原因:

if 与‘[‘之间没有加空格导致的。

完整判断shell 如下:

if  [  "$a"x!  =  "$b"x ] then;
echo "hello world";
fi

这里的关键有几点: (http://www.jb51.net/article/33971.htm)
1 使用单个等号 
2 注意到等号两边各有一个空格:这是unix shell的要求 
3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。而如果没有这个x,表达式就会报错:[: =: unary operator expected

时间: 2024-10-13 16:50:06

字符串比较报错的相关文章

jQuery 之 setTimeout 传递字符串参数报错

当你打算调用一些jQuery代码显示隐藏的一个元素,并调用setTimeout()在一段延时之后设置其HTML的内容: 整个页面的代码是这样的. <span style="font-size:18px;"><html> <head> <title></title> </head> <body> <a href="#" id='heihei' onclick="show

python字符串编码报错解决

写了一个简单的脚本,需要把中文目录名写入excel文件 如果不做处理的话,程序会报错误"UnicodeDecodeError: 'ascii' codec can't decode byte 0xb9 in position 2: ordinal" 这是因为ascii无法解码字符0xb9 所以在字符串后面加上其解码所需的字符集,例如string.decode("gbk"),问题就解决了

解决 python用 xlsxwrite 向excel 中写入中文字符串变量 报错

问题:  UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 7: ordinal not in range(128) 分析:在网上查找,原来python的str默认是ascii编码,和unicode编码冲突,所以无法 中文字符串变量写入excel. 解决:在代码中加入下面几行就可以了. import sys reload(sys) sys.setdefaultencoding('utf8')

JSON.parse()解析该json字符串,特殊字符串引起报错

主要的特殊字符:英文(半角)状态的 单引号 ‘ 双引号"  斜杠 \  反斜杠 /  and符号&   大于号 >  小于号 <   空格 9个特殊符号,可以采取录入的时候进行控制,禁止输入.或者在存入数据库的时候进行转义.或者从数据库取出时候转义.或者在页面进行转义替换等方案. 涉及到:特殊字符可能对  数据库代码 js造成错误.所以要考虑 数据库特殊字符     编写语言特殊字符   html页面特殊字符等. 方案一.存入数据库前对数据进行转义 json串中包含特殊的字符

empty(trim($str))报错原因

最近写程序的时候发现一个这样的问题,一个if判断如下: [php] if (!empty(trim($ch_url))) { ... } [/php] 执行程序报出如下错误: [code] Fatal error: Can't use function return value in write context in ... [/code] 调整为如下形式则不报错误 [php] $ch_url = trim($ch_url); if (!empty($ch_url)) { ... } [/php

MSSQL报错:参数数据类型 text 对于 replace 函数的参数 1 无效的解决办法

Ms - sql 数据库批量替换字符串 MSSQL报错:参数数据类型 text 对于 replace 函数的参数 1 无效的解决办法 update ContentInfo set spcContent=replace(cast(spcContent as varchar(max)),'http://www.buy5188.com/','http://www.epowerchina.com.cn/')

解决sqoop报错:SQLServerException: 将字符串转换为 uniqueidentifier 时失败。

报错栈: Error: java.io.IOException: Cannection handler cannot recover failure: at org.apache.sqoop.mapreduce.db.SQLServerDBRecordReader.nextKeyValue(SQLServerDBRecordReader.java:169) at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyVal

Maven报错“未结束的字符串字面值” “需要为 class、interface 或 enum”等

eclipse里面编译完全正常,mvn clean install 这么惨的错误: Compilation failure: [ERROR] *.java:[38,27] 未结束的字符串字面值 [ERROR] *.java:[38,53] 需要 ';' [ERROR] *.java:[41,19] 需要 ')' [ERROR] *.java:[41,12] 不是语句 [ERROR] *.java:[41,23] 需要 ';' [ERROR] *.java:[41,26] 不是语句 [ERROR]

Win8系统下报错:无法将字符串“*”转换为Length.

之前用WPF做的一个项目,一直测试被有问题,后来测试人员将项目在win8系统下测试,总是报错无法将字符串“*”转换为Length,而且将项目在VS里直接调试也无法定位错误,只能定位的某个类里,后来将类里的属性全部删除,还是回报此错误,突然醒悟,还有样式文件没有排错呢,经过测试发现样式的属性里用到了Height="*",就是这个语句导致的错误,很奇怪,在其他系统下都不会报错,单单在Win8下有错,有高手知道原因,还请不吝赐教!