bash 脚本中的文件输入来自字符串数组

问题描述 投票:0回答:2

给定一个字符串数组,我需要将每个字符串作为源文件输入到构建脚本中。

  1. 声明数组(文件名末尾的额外空格是故意的):
SOURCES=( \
"../../header1.h " \
"../../source1.cpp " \
"../../header2.h " \
"../../header3.h " \
...
"./main.cpp")
  1. 将数组内容转换为一个字符串:
SOURCE_AS_STR=""
for val in "${SOURCES[@]}";
do
    SOURCE_AS_STR+=$val
done
  1. 将字符串重定向到构建脚本中:
bash my_build_script.sh < "${SOURCE_AS_STR}"

BASH 终端响应:

... No such file or directory

我尝试过数组和定界符字符串,但我也收到“不明确的重定向”错误。

arrays string bash unix terminal
2个回答
0
投票

我所需要的就是失去重定向

<
,我可以按照Paolo评论中的建议做
bash my_build_script.sh "${SOURCES[@]}"

我的问题是“重定向不明确”,所以我不知道我可以删除

<
并发送数组。


0
投票

反斜杠(定义

SOURCES
时)是不必要的,但它们没有害处。

您没有指定

my_build_script.sh
如何期望输入。

  • 如果输入应通过标准输入来,请执行以下操作

    my_build_script.sh <<<$SOURCE_AS_A_STRING

  • 如果输入应作为参数传递给脚本,请执行 a

    my_build_script.sh "$SOURCE_AS_A_STRING"

  • 如果输入应通过环境传递给脚本(例如,通过环境变量

    BUILD_INPUT
    ),请执行 a

    BUILD_INPUT=$SOURCE_AS_A_STRING my_build_script.sh

© www.soinside.com 2019 - 2024. All rights reserved.