-
博文分类专栏
- Jquery基础教程
-
- 文章:(15)篇
- 阅读:44852
- shell命令
-
- 文章:(42)篇
- 阅读:148964
- Git教程
-
- 文章:(36)篇
- 阅读:227582
- leetCode刷题
-
- 文章:(76)篇
- 阅读:118493
-
[[:syntax error in expression (error token is "**")报错解决方案2018-07-14 16:56 阅读(24098) 评论(1)
今天写了个简单的shell,报错如下:
./t1.sh: line 15: [[: hello shell: syntax error in expression (error token is "shell")
搜索一下,原来是对if中的比较不够了解,于是掉坑了。
if中的比较,主要有shell风格的和c风格的。
一、shell风格
shell风格的比较,格式一般如下:
#判断n1和n2是否相等 if [ $n1 -eq $n2 ];then echo "eq" fi #当然也可以使用下面的格式 if [[ $n1 -eq $n2 ]];then echo "eq" fi
备注:[[]]运算符是[]运算符的扩展。
1、数值比较
在shell风格中的数值比较,我们可以使用eq、neq、le之类的比较字符,关于这些字符的含义,可以点击“比较字符”
当然,我们也可以使用 "="、">"、“<"符号,但是使用这些符合时候,我们需要使用[[]]运算符
符号 解释 -eq 等于,如:if [ "$a" -eq "$b" ] -ne 不等于,如:if [ "$a" -ne "$b" ] -gt 大于,如:if [ "$a" -gt "$b" ] -ge 大于等于,如:if [ "$a" -ge "$b" ] -lt 小于,如:if [ "$a" -lt "$b" ] -le 小于等于,如:if [ "$a" -le "$b" ] = 等于, 如:if [ "$a" = "$b" ] == 等于, 如:if [[ "$a" == "$b" ]] != 不等于,如:if [ "$a" != "$b" ], 这个操作符将在[[]]结构中使用模式匹配 < 小于,如if [[ "$a" < "$b" ]] 或 if [ "$a" \< "$b" ],在[]结构中"<"需要被转义. > if [[ "$a" > "$b" ]] 或 if [ "$a" \> "$b" ],在[]结构中">"需要被转义. 2、字符串比较
符号 解释 = 等于, 如:if [ "$a" = "$b" ] == 等于, 如:if [[ "$a" == "$b" ]] != 不等于,如:if [ "$a" != "$b" ], 这个操作符将在[[]]结构中使用模式匹配 < 小于,如if [[ "$a" < "$b" ]] 或 if [ "$a" \< "$b" ],在[]结构中"<"需要被转义. > if [[ "$a" > "$b" ]] 或 if [ "$a" \> "$b" ],在[]结构中">"需要被转义. -z 判断字符是否为null ,即长度是否为空 -n 判断字符是否不为null 备注:在[]或[[]]中,符号两边都必须有空格。
二、c语言风格
1、数值比较
在c语言风格中的数值比较,我们可以使用>、=、< 之类的符号,如下:
符号 解释 < 小于,如:if (( "$a" < "$b")) > 大于,如:if (( "$a" > "$b")) <= 小于或等于,如:if [ "$a" <= "$b" ] >= 大于等于,如:if [ "$a" >= "$b" ] 2、字符串比较
符号 解释 < 小于,如:if (( "$a" < "$b")) > 大于,如:if (( "$a" > "$b")) <= 小于或等于,如:if [ "$a" <= "$b" ] >= 大于等于,如:if [ "$a" >= "$b" ]