将参数传递给 ksh 脚本中的函数

Passing param to function in ksh script

从函数内部打印时传递的参数发生变化

print "param: $FILEPREFIX" 1>&2;  #return finyear*
func_copy $FILEPREFIX

然后在函数中

function func_copy 
{
    fp=
    print "param: $fp" 1>&2;  #returns finyear.scr which is a script file name

我在这里做错了什么

当您调用 func_copy $FILEPREFIX 并且 FILEPREFIX 包含 finyear* 时,shell 扩展变量然后进行 wild-card 匹配,因此名称 finyear* 在您的目录中更改为 finyear.scr。为避免扩展,请将名称括在双引号中:

func_copy "$FILEPREFIX"

(在变量扩展周围使用双引号通常是个好主意,但并非总是如此。)

请参阅 shell expansions for the sequence of operations in Bash. The POSIX shell (sh 上的 Bash 手册)有类似的规则,Korn shell 也将类似 — 它们都有一个共同的祖先,Bourne shell .