Shell编程中为什么会出现这个问题

发布于 2021-11-23 20:41:25 字数 1270 浏览 876 评论 14

#!/bin/sh
hello="Kai shi"
echo $hello

function getword{
  local hello="Kai shi 2"
   echo $hello
}
testword(){
 local hello="Kai shi 3"
  echo  $hello
}
getword
testword
echo $hello
echo "This is ${hello}"
                                                                                                                                           

错误如下:命令./ts1

Kai shi
./ts1: 5: ./ts1: function: not found
./ts1: 6: local: not in a function

是什么原因呢?


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

乞讨 2021-11-25 23:14:34

第1行是#!/bin/bash,因为这是bash语法,bash和sh是不同的,或者用命令"bash ts1"运行

第5行,getword后面要有括号或空格

然后运行就可以了

猫烠⑼条掵仅有一顆心 2021-11-25 23:14:34

就是缺少空格...

岁吢 2021-11-25 23:14:34

回复
先贴出你改后的代码吧...

瑾兮 2021-11-25 23:14:34

但是好像还是会报错。不知道是为什么?

爱的故事 2021-11-25 23:14:34

没错,你是正确,就是缺少空格,最好要用Tab来加空格。

梦里兽 2021-11-25 23:14:34

修改之后的代码如下,基本上没有什么特别的变化,只是错误提示有点变化了。

#!/bin/sh
hello="Kai shi"
echo $hello
function getword 
{
hello="Kai shi 2"
 echo $hello
}
testword(){
 local hello="Kai shi 3"
  echo  $hello
}
getword
testword
echo $hello
echo "This is ${hello}"

冷弦 2021-11-25 23:14:31

换行,tab也行。有圆括号的不需要。

回眸一笑 2021-11-25 23:14:30

花括号前必须有个空格

自此以后,行同陌路 2021-11-25 23:14:26

花括号换行写

夜无邪 2021-11-25 23:13:49

但是好像这种语法也是被允许的呀?

屌丝范 2021-11-25 23:13:34

而且问题是还能够执行第一个函数。

猫烠⑼条掵仅有一顆心 2021-11-25 22:12:40

有点语法问题,function getword 后面少了括号,testwork 前面少了 function ,应该与路径无关。

爱的故事 2021-11-25 06:50:39

绝对路径怎么做呢?

旧城烟雨 2021-11-25 05:41:41

给绝对路径试试

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文