将多行评估输出存储在变量 bash 中

Store multiline eval output in variable bash

谁能帮我在 bash 的变量中存储多行输出。我有以下代码:

# FILES[1] contents:
# age people.csv
# ...data...

FILE="${FILES[1]}"

cmd=$(head -n 1 "$FILE")
cmd="./corona $cmd"
echo "Command to run: ${cmd[*]}"
output=$(eval "$cmd")
echo "$output"

我正在尝试将 corona 脚本的输出存储在 output 变量中。但这似乎不起作用。输出停留在

Command to run: ./corona age people.csv

在第二行我只能看到闪烁的光标。但是当我按下 Ctrl+D 时,它突然打印出 corona 脚本的所有输出并停止。因此,可能 echo 命令在按下快捷键后立即起作用。

另外,我想提一下,变量 FILES 是一个文件名数组。所以 FILE 变量是文件的名称。它的第一行有 运行 的命令参数,第二行有其他数据。

这是我开发的示例脚本,用于将 ls 的输出读入变量。您可以使用相同的技术。

#!/bin/bash

my_array=()
while IFS= read -r line; do
    my_array+=( "$line" )
done < <( ls )
echo ${#my_array[@]}
printf '%s\n' "${my_array[@]}"