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

诸葛非卿 发布于 2014/04/18 23:40
阅读 202
收藏 0
#!/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

是什么原因呢?


以下是问题补充:

@诸葛非卿:目前听了几位的话之后修改了代码,但是还是出现如下错误,请问是什么情况呢? Kai shi ./ts1: 4: ./ts1: function: not found Kai shi 2 ./ts1: 13: ./ts1: getword: not found Kai shi 3 Kai shi 2 This is Kai shi (2014/04/19 22:27)
加载中
0
二的思维
二的思维
给绝对路径试试
诸葛非卿
诸葛非卿
绝对路径怎么做呢?
0
二的思维
二的思维
有点语法问题,function getword 后面少了括号,testwork 前面少了 function ,应该与路径无关。
诸葛非卿
诸葛非卿
而且问题是还能够执行第一个函数。
诸葛非卿
诸葛非卿
但是好像这种语法也是被允许的呀?
0
lingxi27
lingxi27

花括号换行写

0
wharf_zhang
wharf_zhang
花括号前必须有个空格
0
wharf_zhang
wharf_zhang
换行,tab也行。有圆括号的不需要。
0
gnefil.nil
gnefil.nil


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

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

然后运行就可以了


0
森林羊
森林羊

就是缺少空格...

森林羊
森林羊
回复 @诸葛非卿 : 先贴出你改后的代码吧...
诸葛非卿
诸葛非卿
但是好像还是会报错。不知道是为什么?
诸葛非卿
诸葛非卿
没错,你是正确,就是缺少空格,最好要用Tab来加空格。
0
诸葛非卿
诸葛非卿

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

#!/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}"



返回顶部
顶部