[问题]Bash不同版本的语法差异问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
bluebirdyy
帖子: 7
注册时间: 2006-04-09 10:42

[问题]Bash不同版本的语法差异问题

#1

帖子 bluebirdyy » 2006-09-21 16:43

本人的做嵌入式开发,原来的工作环境是用Redhat9,后来因为自已用习惯了Ubuntu,于是想转移到Ubuntu下面工作。
像编译环境之类的安装就基本没问题,但是在Shell处好像有点麻烦。

原来的代码在Redhat9下是可以正常编译的,但在同样是使用Bash的Ubuntu下面却发现脚本有问题,比如其中有一段:
在编译过程中提示:

#( . /home/abc/linux/linux/.config ; \
if [ "${CONFIG_MODULES}" = "y" ] ; then \
make -C /home/abc/linux/linux modules_install DEPMOD=/bin/true INSTALL_MOD_PATH=/home/abc/router/mipsel-uclibc/target ; \
fi )
/bin/sh: -c: line 3: syntax error near unexpected token `)'
/bin/sh: -c: line 3: `fi )'
make: *** [install] 错误 2



如上,提示这段脚本有语法错误,我看了一下 /bin/sh 是链接到/bin/bash

但是在Redhat9下用的也是Bash啊,难道会是因为Ubuntu的版本比较高?

麻烦各位帮我看一下上面一段脚本是不是有问题?

抑或不是脚本的或者Shell的问题而是其它的地方?
xdsnet
帖子: 80
注册时间: 2006-02-28 15:44

#2

帖子 xdsnet » 2006-10-27 11:34

你多了一个#号吧,要不就把#换成$号看看。
Zelgadiss
帖子: 8
注册时间: 2006-11-06 10:25

#3

帖子 Zelgadiss » 2006-11-06 10:37

bash的版本问题是肯定存在的
不同的版本在语法解析上也不同

至少我遇到过2.05与3.0的问题
不过高版本在语法上还是能够兼容低版本的

高版本的部分功能,低版本是无法使用的
所以写的时候,注意一下
PS:事实上开源的最大麻烦之一就是版本问题
头像
laborer
帖子: 1016
注册时间: 2005-10-25 11:15
联系:

#4

帖子 laborer » 2006-11-12 7:17

Zelgadiss 写了:PS:事实上开源的最大麻烦之一就是版本问题
事实上,版本问题是所有软件的最大麻烦之一。
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
Zelgadiss
帖子: 8
注册时间: 2006-11-06 10:25

#5

帖子 Zelgadiss » 2006-11-13 17:55

laborer 写了: 事实上,版本问题是所有软件的最大麻烦之一。
遇到过前一个版本可以用的源码,下一个版本就全错了
555555555555555555

dfb+lite

而最郁闷的是,开源软件之间版本的相互要求.....
头像
sinoyster
帖子: 958
注册时间: 2005-10-16 13:24
来自: 四川成都
联系:

#6

帖子 sinoyster » 2006-11-15 17:51

> ls -l /bin/sh
看一下是不是dash??
是的话换成bash就是了
执行 sudo dpkg-reconfigure dash 后,选择 no。
Thank you Ubuntu Team!!!!
I still can't belive this is free...
回复