uclinux中的shell脚本执行错误

时间:2010-01-07 13:01:16

标签: shell scripting

我有一个简单的shell脚本如下:

myfunc()
{
        #print hello world
        echo "Hello World";
}

myfunc

当我在linux pc中执行时脚本工作正常,但是当我在uclinux中运行相同时,我将错误视为“语法错误”。 这个问题可能是什么原因?

更新

以下代码适用于uclinux:

####\#!/bin/sh
echo "Hello World"

但是,以下代码无效:

####!/bin/sh
myfunc()
{
        #print hello world
        echo "Hello World";
}

myfunc

6 个答案:

答案 0 :(得分:1)

结果取决于您运行的shell。大多数uclinux的shell实际上是Busybox的符号链接。 Busybox实现各种微型外壳,满足不同的内存占用要求。我记得,只有 ash 支持函数语法。检查您的busybox版本及其构建配置。

答案 1 :(得分:0)

也许您的uclinux安装使用不同的shell?

说“shell脚本不起作用”就像是说“我的源代码不起作用”。当然,如果你说你的源代码是什么语言,这个短语才有意义。对于shell脚本也是如此:它是bash吗?是ksh吗?是tcsh吗?对于uclinux,我非常怀疑它是忙碌的。

答案 2 :(得分:0)

你的shell脚本应该有一个shebang行,它将导致脚本由你指定的shell执行。这可以减少或消除许多意外错误,这些错误是由于当前(或默认)shell执行脚本时导致的shell之间的语法差异,这可能由于多种原因而不同。

脚本文件的第一行应类似于:

#!/bin/sh

使用适合您需要的shell的路径和名称。

答案 3 :(得分:0)

您显示的实际myfunc是否在一行中定义了?这是一个语法错误,因为你正在评论很多东西,包括}

答案 4 :(得分:0)

如果您将myfunc() { #print hello world echo "Hello World"; }放在一行,那么

#print hello world echo "Hello World"; }被解释为评论。删除部分#print hello world,然后重试。

答案 5 :(得分:0)

如果使用Busybox和hush
配置BusyBox Shell部件以支持功能:

make busyBox-menuconfig
壳 - >支持功能....(应该检查)