为什么赢了';我的bash accept function关键字版本是什么?

为什么赢了';我的bash accept function关键字版本是什么?,bash,syntax,Bash,Syntax,我的bash版本是: bash --version GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu) 如果我做原型功能 #!/bin/bash function f() { echo "hello" $1 } f "world" 我得到语法错误:“(“意外的 为什么呢 shopt的输出为: autocd off cdable_vars off cdspell off checkha

我的bash版本是:

bash --version
GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
如果我做原型功能

#!/bin/bash
function f()
{
echo "hello" $1
 }
 f "world"
我得到
语法错误:“(“意外的

为什么呢

shopt的输出为:

autocd          off
cdable_vars     off
cdspell         off
checkhash       off
checkjobs       off
checkwinsize    on
cmdhist         on
compat31        off
compat32        off
compat40        off
compat41        off
direxpand       off
dirspell        off
dotglob         off
execfail        off
expand_aliases  on
extdebug        off
extglob         on
extquote        on
failglob        off
force_fignore   on
globstar        off
gnu_errfmt      off
histappend      on
histreedit      off
histverify      off
hostcomplete    off
huponexit       off
interactive_comments    on
lastpipe        off
lithist         off
login_shell     off
mailwarn        off
no_empty_cmd_completion off
nocaseglob      off
nocasematch     off
nullglob        off
progcomp        on
promptvars      on
restricted_shell    off
shift_verbose   off
sourcepath      on
xpg_echo        off

您的
bash
版本不接受
函数
关键字。问题是您没有在
bash
下运行脚本

如果使用
dash foo.bash
sh foo.bash
运行脚本,则会出现相同的错误(
/bin/sh
是系统上指向
dash
的符号链接)

dash
无法识别
函数的语法

#!/bin/bash
行导致脚本由bash解释——但只有当您直接调用它时,而不是当您将它提供给其他shell时

而不是调用shell并将脚本名称作为参数传递给它:

sh foo.bash
直接调用脚本即可:

foo.bash (or ./foo.bash)

您的
bash
版本不接受
函数
关键字。问题是您没有在
bash
下运行脚本

如果使用
dash foo.bash
sh foo.bash
运行脚本,则会出现相同的错误(
/bin/sh
是系统上指向
dash
的符号链接)

dash
无法识别
函数的语法

#!/bin/bash
行导致脚本由bash解释——但只有当您直接调用它时,而不是当您将它提供给其他shell时

而不是调用shell并将脚本名称作为参数传递给它:

sh foo.bash
直接调用脚本即可:

foo.bash (or ./foo.bash)

适合我。请确保文件中没有特殊的隐藏字符有多奇怪。关于如何查找这些字符,有什么提示吗?请尝试
cat-A文件名
。它将控制字符扩展为可打印的形式,并在每行末尾添加一个
$
。您如何运行该文件?错误消息听起来好像即将出现om
ksh
或其他非bash shell。如果我使用
dash foo.bash
sh foo.bash
运行脚本,就会出现该错误(
/bin/sh
是系统上指向
dash
的符号链接).The
#!/bin/bash
行会导致bash解释脚本——但只有在您直接调用它时,而不是在您将它馈送到其他shell时才可以。对我有效。请确保文件中没有特殊的、隐藏的字符有多奇怪。有关如何查找这些字符的任何提示?请尝试
cat-A文件名
。它会展开ol字符到可打印表单,并在每行末尾添加一个
$
。如何运行该文件?错误消息听起来像来自
ksh
或其他非bash shell。如果使用
dash foo.bash
sh foo.bash
/bin/sh
是我的系统上的
dash
的符号链接。)
#!/bin/bash
行使脚本由bash解释——但只有在您直接调用它时,而不是在您将它提供给其他shell时。