Shell 带转义的脚本变量扩展

Shell script variable expansion with escape

以下脚本:

#!/bin/bash

nested_func() {
    echo 
    echo 
}

func() {
    echo 
    nested_func 
}

func 1 "2 '3.1 3.2'"

输出:

1
2
'3.1

我想得到的输出是:

1
2
3.1 3.2

如何在 func 上使用单个参数而不是多个参数来实现此输出?

编辑以解决简化问题

你可以试试这个:

#!/bin/bash

nested_func() {
    echo ""
    echo ""
}

func() {
    nested_func "$@"
}

func 1 '2.1 2.2'

$@表示赋予函数的所有位置参数


作为替代方案,您可以使用:

#!/bin/bash

nested_func() {
    echo ""
    echo ""
}

func() {
    echo ""
    shift
    nested_func "$@"
}

func 1 2 '3.1 3.2'

shift关键字允许跳过第一个参数。

如果你有 4 个参数,你可以很容易地映射它...

我得到了预期的输出:

#!/bin/bash
nested_func() {
    echo 
    echo 
}

func() {
    echo 
    nested_func ${2%% *} "${2#* }"
}

func 1 "2 3.1 3.2"

使用Parameter expansion