shell脚本里有数组时的执行问题,centos下成功不报错,debian就报错

无论用 () 这种一行代码的语法。

hmj_arr=(hmj_status)

还是用 六行代码的语法

hmj_status=$(pgrep -l java|awk '{print $1}')
i=0
for hmj_pid in $hmj_status
do
hmj_arr[$i]=$hmj_pid
i=$i+1
done

centos下都能成功把字符串转化成数组,但debian下就报错。

原因是:

其他操作系统执行sh指向的是bash

但是debian的sh指向的确实dash

[root@test-100 list]# which sh
/bin/sh [root@test-100 list]# ls -lh /bin/sh lrwxrwxrwx 1 root root 4 Nov 8 2014 /bin/sh -> dash 

又因为dash是比bash还轻量的,只支持基本的shell功能,

其中不包括刚才那种数组初始化,所以才会识别不了,直接报Syntx error

解决办法是,先赋予脚本执行权限,然后直接用bash test.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值