ubuntu数组赋值报not found

尼玛,ubuntu默认dash不支持数据,搞了好久,按下面方便把系统默认shell改为bash就行。

#!/bin/sh
declare -a name
for i in `seq 100`
do
   name[$i]=$i
   echo ${name[$i]} #为方便检查,加了打印
done
追问
都会报错
回答
同样是Ubuntu 10.10,不会报错。
书写时请注意空格,关键词for后面要有空格
追问
加了空格一样错
回答
我看了你下面的程序,
关键问题在于,你声明为了 #!/bin/sh,而sh环境是不能用 for((i=0; i<100; i++)) 这种不符合POSIX标准的语句的。只能用我的第二种方法。 for ... in ... 这种语句是支持的。或者用while循环,变量在循环中递增。
追问
#!/bin/sh
for i in 1 2 3
do
    name[$i]=$i
done
name[1]=1:not found
name[2]=1:not found
name[3]=1:not found

说实话,从没接触过象shell这么渣的语言。一点规范都没
回答
for循环前加上这句试试:
declare -a name
声明name为数组变量
追问
加不加都试过了,都错
回答
ubuntu中默认的shell是dash,是不支持数组的。
ls -l /bin/sh 可以看到sh是个指向dash的链接,所以你声明#!/bin/sh其实还是用的dash。
我忘记自己曾经配置过Ubuntu了。如下:
=========================================
怎么能把 dash 去掉而使用默认的 bash?
使用命令:sudo dpkg-reconfigure dash  
此命令是对已安装的包进行重新配置,在菜单(dash-bash-sh.png)中选择是否将 sh 链接到 dash (Install dash as /bin/sh?) 选择否即可。具体请到百度文库中搜索“Ubuntu把默认的bash替换成了dash“,里面有一张图片说明。
还有另一种不太好看的办法,请百度搜索“Shell中模拟数组”。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值