Linux运行脚本报错:deploy.sh: 4: local: not in a function

Linux运行脚本报错:deploy.sh: 4: local: not in a function

运行命令:

shell 复制代码
sh deploy.sh start

脚本大致内容:

shell 复制代码
#!/bin/bash
function start
{
  local server_pid=1
  return 0
}

其实这个问题我之前遇到过,local 是修饰局部变量的,需要放在函数里面,不能放在函数外面,但是这里本来就是在函数里面,还是报这个错......

去搜了下,居然一时半会没找到,然后问GPT,有点6!

你遇到的错误是因为在脚本中使用了 local 关键字,而 local 关键字只能在函数内部有效,且在 sh 或 dash

中是不可用的。默认情况下,许多 Linux 系统上的 /bin/sh 是 dash 而不是 bash,而 dash 不支持 local

关键字。

shell 复制代码
# 查看当前使用的shell(当前系统是ubuntu,不知道是不是默认的)
#参考:https://blog.csdn.net/Kukafee/article/details/118155159
root@WatsonsUbuntu:~# echo $0
-bash

没想到是脚本执行器的原因,用bash执行就正常了。(有点奇怪为什么这个会影响local???)

shell 复制代码
bash deploy.sh start
相关推荐
zly35002 分钟前
只能同网段ping通,route add命令添加默认路由
linux·运维·服务器
徐子元竟然被占了!!14 分钟前
批处理文件
运维
isyangli_blog15 分钟前
制作Linux Centos8 模板
linux·运维·服务器
lsunwing18 分钟前
jsjdafasdfadsf
运维·服务器
Java后端的Ai之路20 分钟前
Playwright是微软开源的浏览器自动化库:从入门到精通的实战指南
运维·microsoft·自动化·浏览器自动化·playwright
.生产的驴33 分钟前
1Panel实战|SpringColud微服务部署生产环境一键部署Docker+Nacos+MySQL 数据定时备份 控制台 安全高效易维护
服务器·后端·mysql·spring cloud·docker·微服务·信息可视化
牛奶咖啡1341 分钟前
DevOps自动化运维实践_搭建UEFI网络引导的自动安装Ubuntu20及其更高版本系统
运维·自动化·devops·cloud-init·cloud-init自动应答·ubuntu24系统自动化安装·uefi网络引导自动安装部署
-Da-1 小时前
【操作系统学习日记】并发编程中的竞态条件与同步机制:互斥锁与信号量
java·服务器·javascript·数据库·系统架构
A.A呐1 小时前
【Linux第十八章】线程
linux
wanhengidc1 小时前
云手机与模拟器的关系
大数据·运维·服务器·分布式·智能手机