我正在尝试使用gnuplot绘制bash数组,而不将其转储到临时文件中。
比方说:
myarray=$(seq 1 5)
我尝试了以下方法:
myarray=$(seq 1 5)
gnuplot -p <<< "plot $myarray"
我收到以下错误:
line 0: warning: Cannot find or open file "1"
line 0: No data in plot
gnuplot> 2
^
line 0: invalid command
gnuplot> 3
^
line 0: invalid command
gnuplot> 4
^
line 0: invalid command
gnuplot> 5''
^
line 0: invalid command
为什么不将数组解释为数据块?
任何帮助表示赞赏。
bash数组
myarray = $(seq 1 5)
的myarray
是不一个bash阵列,它是一个正常的变量。
最简单的方法是将数据放入stdin并绘图<cat
。
seq 5 | gnuplot -p -e 'plot "<cat" w l'
或者使用您的变量并使用here-string:
<<<"$myarray" gnuplot -p -e 'plot "<cat" w l'
或与重定向你的变量echo
或printf
:
printf "%s\n" "$myarray" | gnuplot -p -e 'plot "<cat" w l'
如果要绘制实际的数组,只需将其打印在单独的行上,然后通过管道传输到gnuplot
array=($(seq 5))
printf "%s\n" "${array[@]}" | gnuplot -p -e 'plot "<cat" w l'
要么
echo $myarray | tr " " "\n" | gnuplot -p -e 'plot "<cat" w l'
避免无用的使用
cat
!用STDIN
代替,看我的答案