我有一个简单的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
答案 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
壳 - >支持功能....(应该检查)