.sh脚本文件shebang行引发的syntax error:“(“ unexpected

在将项目从CentOS移植到Ubuntu时遇到.sh脚本错误,提示'('意外。问题源于Ubuntu中/bin/sh默认为dash,不支持bash的一些特性。解决方案是在脚本首行添加shebang行,如#!/bin/bash,确保脚本以bash解释器运行。
摘要由CSDN通过智能技术生成

在运行.sh脚本文件的时候提示如下错误:

./cp_ecnt_kernel.sh: 23: Syntax error: "(" unexpected

 23 function cp_file(){

它说"("是出乎意料的,但是在bash里,这是一个合法的常用语法。

打开 cp_ecnt_kernel.sh文件,发现它缺少shebang line, 即首行的#!/bin/sh 或#!/bin/bash。在缺少这一行的时候,linux用/bin/sh来执行脚本。在Ubuntu里,/bin/sh缺省是dash。dash的特点是快速启动和执行,但是只包括标准特性。上面当dash执行到脚本文件的第23行的时候,它碰到了"("。它认为这个从上下文来看是没有任何意义的,因此立即报错退出。

这个错误的出现源于项目源码SDK从CentOS平台移植到Ubuntu平台进行编译。在CentOS环境下,/bin/sh缺省是bash,所以运行没问题。解决方案是,在每一个.sh脚本文件的头部(第一行)增加shebang line,即#!/bin/bash,如果有的是#!/bin/sh,要把它换成#!/bin/bash。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值