cygwin和linux的bash语法不兼容吗?

judyeeh 2009-11-05 02:41:30

有两段代码:
#!/bin/sh
if [ $#=0 ]
then
echo "Name not provided"
else
echo "You name is $1"
fi


#!/bin/sh
if [ $#=0 ]; then echo "Name not provided"
else echo "You name is $1"
fi

名字为mypgm1
第一段代码在cygwin下不能正确运行
报错:
mypgm1: line 2: [: missing `]'
mypgm1: line 5: $'\r': command not found

第二段代码就可以运行了

但是两段代码在纯linux的环境都能运行。
请问这是语法不兼容的问题吗?
...全文
68 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
unixlinuxsys 2009-11-05
  • 打赏
  • 举报
回复
没有听说。。。。。。。

全兼容的
jeff_jian 2009-11-05
  • 打赏
  • 举报
回复
set ffs=unix,dos
jeff_jian 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 judyeeh 的回复:]
jeff_jian,你真幽默啊,呵呵

我是用UE写的代码。忙我推荐一个更好的编辑器吧

我想彻底解决这个问题,今后就不用关心语法问题了

[/Quote]

——'
VI吧,改下.vimrc:
set fileformat=unix
应该OK
zkuang82 2009-11-05
  • 打赏
  • 举报
回复
我比较习惯vim
judyeeh 2009-11-05
  • 打赏
  • 举报
回复
好的,感谢elfirex~
judyeeh 2009-11-05
  • 打赏
  • 举报
回复
jeff_jian,你真幽默啊,呵呵

我是用UE写的代码。忙我推荐一个更好的编辑器吧

我想彻底解决这个问题,今后就不用关心语法问题了
zkuang82 2009-11-05
  • 打赏
  • 举报
回复
没怎么用过cygwin,不过你可以试试在cygwin下用vim emacs之类的编辑器写你的脚本。
或者试试对你的脚本 sed 's/\r//g'
jeff_jian 2009-11-05
  • 打赏
  • 举报
回复
if [ $# -eq 0 ]; then
....
else
....
fi
judyeeh 2009-11-05
  • 打赏
  • 举报
回复
嗯,是的。那我怎么样才能解决这个问题呢?
zkuang82 2009-11-05
  • 打赏
  • 举报
回复
换行符问题吧。
win的换行和newline是分开的\r\n
linux里只有\n。你的脚本在win写的?

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧