以下脚本:
#!/bin/bash
nested_func() {
echo $1
echo $2
}
func() {
echo $1
nested_func $2
}
func 1 "2 '3.1 3.2'"
输出:
1
2
'3.1
我想得到的输出是:
1
2
3.1 3.2
如何使用单个参数func
而不是多个参数来实现此输出?
进行编辑以解决简化问题
以下脚本:
#!/bin/bash
nested_func() {
echo $1
echo $2
}
func() {
echo $1
nested_func $2
}
func 1 "2 '3.1 3.2'"
输出:
1
2
'3.1
我想得到的输出是:
1
2
3.1 3.2
如何使用单个参数func
而不是多个参数来实现此输出?
进行编辑以解决简化问题
你可以试试这个:
#!/bin/bash
nested_func() {
echo "$1"
echo "$2"
}
func() {
nested_func "$@"
}
func 1 '2.1 2.2'
$@
表示给函数的所有位置参数
作为替代方案,您可以使用它:
#!/bin/bash
nested_func() {
echo "$1"
echo "$2"
}
func() {
echo "$1"
shift
nested_func "$@"
}
func 1 2 '3.1 3.2'
shift
关键字允许跳过第一个参数。
如果您有 4 个参数,您可以轻松地映射它...
我有这个预期的输出:
#!/bin/bash
nested_func() {
echo $1
echo $2
}
func() {
echo $1
nested_func ${2%% *} "${2#* }"
}
func 1 "2 3.1 3.2"
使用参数扩展