将多行评估输出存储在变量 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[@]}"
谁能帮我在 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[@]}"