sh执行脚本报错Syntax error: “(“ unexpected ​的两种解决办法

简介: ​sh执行脚本报错Syntax error: “(“ unexpected ​的两种解决办法

步留痕
​sh执行脚本报错Syntax error: “(“ unexpected ​的两种解决办法
sh执行脚本报错Syntax error: “(“ unexpected ​的两种解决办法

sh脚本中有数组初始化的内容

$ str="123 456 789"
$ array=($str)
$ echo ${array[2]}
sh执行脚本会报错Syntax error: "(" unexpected

--------------------------------------------------------第一种-----------------------------------------------------------

bash and dash

Bash是许多Linux平台的内定Shell,除bash外,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等。
GNU/Linux 操作系统中的 /bin/sh 本是 bash的符号链接,但鉴于 bash 过于复杂,有人把 bash 从 NetBSD 移植到 Linux 并更名为 dash 并将 /bin/sh 指向它,以获得更快的脚本执行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX标准。
Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。
要知道自己的/bin/sh指向何种解释器,可以用 ls /bin/sh -al 命令查看。
解决办法
修改默认的sh,可以采用命令sudo dpkg-reconfigure dash。在配置菜单中选no。
--------------------------------------------------------第二种------------------------------------------------------------------------

原因:
{spa.zzwjgk.com]
{spa.fb-town.com]
{spa.dianchi1.com]
{spa.snpbiz.com]
{spa.8fanmu.com]
{spa.6181111.com]
其他常见的linux发行版,虽然很多是将sh指向bash

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

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

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

解决:
解决办法是,直接用bash test.sh,或者./test.sh,这两种方式来执行脚本。

资料来源:https://blog.csdn.net/baidu_41617231/article/details/135748930

相关文章
|
存储 监控 Linux
【Linux IO多路复用 】 Linux下select函数全解析:驾驭I-O复用的高效之道
【Linux IO多路复用 】 Linux下select函数全解析:驾驭I-O复用的高效之道
2368 0
|
Ubuntu Linux 编译器
openssl 的编译(linux、Ubuntu) 和 交叉编译(arm、Hi3531A)的问题分析、解决
openssl 的编译(linux、Ubuntu) 和 交叉编译(arm、Hi3531A)的问题分析、解决
2319 0
|
Java Spring
解决Spring工具类BeanUtils copyProperties方法复制null的问题
解决Spring工具类BeanUtils copyProperties方法复制null的问题
1182 0
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
1281 1
|
安全 Java Android开发
【Android P】OTA升级包定制,移除不需要更新的分区,重新打包签名
如何解压OTA升级包、编辑升级包内容(例如移除不需要更新的分区)、重新打包、签名以及验证OTA文件的过程。
1151 2
【Android P】OTA升级包定制,移除不需要更新的分区,重新打包签名
|
12月前
|
存储 C语言 索引
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
本文全面介绍了Python的基础知识,包括Python的诞生背景、为什么学习Python、Python的应用场景、Python环境的安装、Python的基础语法、数据类型、控制流、函数以及数据容器的使用方法,旨在为Python零基础读者提供一篇全面掌握Python语法的博客。
3175 1
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
|
Ubuntu 安全 网络协议
|
Shell
shell获取命令输出和返回值
shell获取命令输出和返回值
2565 0
|
存储 机器学习/深度学习 并行计算
Pytorch NCHW/NHWC 的理解
Pytorch NCHW/NHWC 的理解
656 1