无论用 () 这种一行代码的语法。
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
本文讲述了在Debian系统中,由于sh指令默认指向Dash而不是Bash,导致含有数组初始化的脚本在CentOS和Debian上运行结果不同。由于Dash仅支持基本的shell功能,不包含数组初始化,故出现Syntax error。解决方法是将脚本指定为使用Bash解释器执行。
5846

被折叠的 条评论
为什么被折叠?



