所以我有一个函数我想解包一个参数数组以形成参数序列:
#!/usr/bin/env bash
my_func() {
echo "IN LEN: $#" # Gives "6" -> Should be "4"
echo "IN: $@" # Gives "--a 1 --b 2 3 4" -> Should be "--a 1 --b 2\n3\n4"
}
read -r -d '' MULTI << EOM
2
3
4
EOM
ARGS=("--a" "1" "--b" "$MULTI")
echo "OUT LEN: ${#ARGS[@]}" # 4
echo "OUT: ${ARGS[@]}" # "--a 1 --b 2\n3\n4"
my_func ${ARGS[@]}
此示例演示了该问题以及我所期待的内容。设置IFS
可能有些神奇吗?有什么建议吗?
PS。如果您需要更多上下文,请参阅我原来的问题:Handle optional function arguments
答案 0 :(得分:3)
将my_func ${ARGS[@]}
更改为my_func "${ARGS[@]}"
如果没有括号双引号,则会扩展参数,shell将删除尾随的新行。