debian 重复执行sh_debian上sh执行含有数组初始化的脚本报错

debian/ubuntu上sh命令默认是指向dash,而不是bash

Debian Almquist shell,缩写为dash,一种 Unix

shell,相容于POSIX标准。

它比 Bash 小,只需要较少的磁盘空间,但是它的对话性功能也较少。

它由 NetBSD版本的Almquist shell (ash)发展而来,

于1997年,由赫伯特·许(Herbert Xu)移植到Linux上,于2002年改名为 dash。

bash shell上初始化数组一个简单例子

$ str="123 456 789"

$ array=($str)

$ echo ${array[2]}

789

假如写成脚本test.sh:

#!/bin/bash

str="123 456 789"

array=($str)

echo ${array[2]}

在debian下直接用sh

test.sh命令执行,就会报错

提示如下:

$ sh -x test.sh

+ str=123 456 789

test.sh: 3: test.sh: Syntax error: "(" unexpected

一开始测试是直接copy到终端中运行,没报错,但一用sh来执行脚本,就报错

后来想到,虽然脚本指定了执行工具是/bin/bash,

但这更多是在chmod

+x test.sh后直接./tesh.sh这种方式,

才会去调用/bin/bash来解析脚本,

其他常见的linux发行版,虽然很多是将sh指向bash,

但是debian中不是,而是 sh => dash,

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

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

解决办法是,直接用bash

test.sh,或者./test.sh,这两种方式来执行脚本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值