【发布时间】:2022-02-13 20:03:03
【问题描述】:
我有一个输出一长串文件的 python 脚本。
脚本是从 bash 运行的,最后我需要将最后三个文件分别分配给一个特定的变量。
我能够将输出捕获到一个 bash 变量中,但是当我尝试将其通过管道传递给“tail”命令时,它似乎只有一行?
我尝试了一些我见过的技巧,但似乎无法弄清楚如何在单个行的基础上使用输出。
似乎任何python输出都会被解释为一行?
echo "TESTING sample multi-line python output"
OUTPUT=$(python -c "for i in range(5): print(i)")
# check output
echo "$OUTPUT"
variable3=$(echo $OUTPUT | tail -1)
echo "VARIABLE CAPTURED"
echo $variable3
但我实际上需要将变量 1 作为从末尾开始的第 3 行,将变量 2 作为从末尾开始的第 2 行,将变量 3 作为从末尾开始的第一行
所以在上面的例子中,最终想要的结果是:
variable1 = 2
variable2 = 3
variable3 = 4
为了将这些变量传递给脚本的下一阶段...
【问题讨论】:
-
你需要引用
"$OUTPUT",否则在IFS(空格,包括新行)上被分割,echo打印每个参数,用空格分隔。python -c ... | tail -n3.