如何将一个 bash 脚本中的参数数组传递给另一个其中一些参数有空格的脚本

How to pass array of arguments in one bash script to another where some arguments have spaces

我正在编写一个 bash 脚本,该脚本生成要传递给另一个外部脚本的参数列表。此参数列表可以包含带空格的字符串。请注意,此参数列表的长度将根据脚本的不同而有所不同 运行.

bash 脚本如下所示:

#!/bin/bash
# script1.sh

... some code that populates the array ARGS_TO_PASS ...

# NOTE! ARGS_TO_PASS can be of varying length depending on what the above code does.
#
# Here is example of what ARGS_TO_PASS might be:
# ARGS_TO_PASS=(a b c 'the quick brown fox')

# Now, call script2.sh on ARGS_TO_PASS.
script2.sh ${ARGS_TO_PASS[*]}

这是第二个脚本:

#!/bin/bash
# script2.sh
while [[ $# -gt 0 ]]; do
    echo "parsing arg: "
    shift
done

如果 script1.sh 的最后一行是 script2.sh ${ARGS_TO_PASS[*]},则输出如下所示:

parsing arg: a
parsing arg: b
parsing arg: c
parsing arg: the
parsing arg: quick
parsing arg: brown
parsing arg: fox

如果 script1.sh 的最后一行是 script2.sh "${ARGS_TO_PASS[*]}",则输出如下所示:

parsing arg: a b c 'the quick brown fox'

这两个都不是我想要的。我想要的输出是这样的:

parsing arg: a
parsing arg: b
parsing arg: c
parsing arg: the quick brown fox

有什么办法吗?

您可以使用

script2.sh "${ARGS_TO_PASS[@]}"