【发布时间】:2015-06-28 14:34:27
【问题描述】:
我试图弄清楚如何在函数调用链中保留原始参数。
例如考虑以下情况:
#!/usr/bin/ksh
function foo1
{
print "$#"
print "$@"
# Call to some other script which expect
# same arguments as foo3
# ./some_ksh_script "$@"
}
function foo2
{
print "$#"
print "$@"
backup_arg="$@"
# Process arguments
foo1 $backup_arg
}
function foo3
{
print "$#"
print "$@"
backup_arg="$@"
# Process arguments
foo2 $backup_arg
}
foo3 "$@"
输出 -
vikram@vikram-VirtualBox ~ $ ./test.sh 1 "2 3 4" 5
3
1 2 3 4 5
5
1 2 3 4 5
5
1 2 3 4 5
看起来我在备份参数时丢失了原始参数。
脚本 some_ksh_script 应该得到 3 个参数 1、2 3 4、5 但得到 5 个。
有什么方法可以保留原始参数吗?
【问题讨论】:
-
为什么不能打电话给
foo2 "$@"和foo1 "$@"? -
如果您需要保留参数数组,您需要使用数组而不是字符串。
标签: function shell scripting arguments ksh