将参数传递给 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 .
从函数内部打印时传递的参数发生变化
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 .