[Shell] cygwin执行if语句时出错

Shell代码如下:

if ["1"="2"]; then
    echo "a"
else
    echo "b"
fi

(1)报错:

Syntax error near unexpected token `fi'

原因:
换行符在各操作系统中是不同的:

windows:\r\n
unix:\n
mac:\r

所以,以上包含换行符的命令行,
在unix中执行,会有多余的\r字符。

处理方法一:
安装dos2unix,

$ dos2unix 1.sh

处理方法二:
把所有的\r都删掉,

$ cat < 1.sh | tr -d '\r' > 2.sh

(2)还是会报错:

[1=2]: Command not found

原因:
条件“[]”中括号内,要加空格。

处理:

["1"="2"] => [ "1"="2" ]

(3)结果错误:

条件判断没有生效,
执行了echo "a"

原因:
字符串的逻辑判断“=”两边需要加空格。

处理:

[ "1"="2" ] => [ "1" = "2" ]

注意:
字符串如果不包含空格,可以省略双引号。
如果是数字比较,不能使用“<”“>”,而应该使用“-lt”“-gt”。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,133评论 0 0
  • 今夜今时 若我沉睡 将有一个梦来 梦见曾经,你们都在 秋花开落了 伴着阵阵风儿片片纷飞 艳阳高照下 思念染尽黄叶 ...
    清若阅读 399评论 2 19
  • 《古风:秋殇》 爱秋日日苦寻秋, 北风斜吹秋尽头。 落叶黄昏霜露近, 老妪倚门愁更愁。 (清风明月于十月十二号)
    清风明月冯耀杰阅读 204评论 0 1
  • 由于项目期限快到,问题还较多,开发有些问题还不是很清楚,因此周日就被安排了加班……这次的开发是个应届毕业生,真...
    喵喵喵喵苗啊阅读 240评论 0 0