gpt4 book ai didi

linux - 使用 gnuplot 将命令放在多行中

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:44 27 4
gpt4 key购买 nike

当我在 Bash 中输入以下命令时,它运行良好(它生成直方图):

$ cat input.dat | gnuplot -p -e 'set style data histograms; set style histogram cluster gap 1; set style fill solid border -1; set boxwidth 0.05; binwidth=0.1 ; bin(x,width)=width*floor(x/width) + binwidth/2.0; plot "-" using (bin($1, binwidth)):(1) smooth freq with boxes'

我想把这个命令放在一个文件中,分几行。我试过这个:

#!/bin/bash

cat input.dat | gnuplot -p -e 'set style data histograms; set style histogram cluster gap 1; \
bin(x,width)=width*floor(x/width) + binwidth/2.0; \
plot "-" using (bin($1, binwidth)):(1) smooth freq with boxes'

但是当我执行这个shell脚本时,我得到了以下错误:

set style data histograms; set style histogram cluster gap 1; \
^
line -3: invalid character \

问题是我将 gnuplot -p -e 命令分成多行,但在简单引号之间 '... set style histogram cluster gap 1;\... bin(x,width)=width*floor(x/width) + binwidth/2.0;\... 带框的平滑频率

这与我们用反斜杠分隔 linux 命令时的情况不同:在我的例子中,我在 2 个简单引号的 block 内分隔。

有没有办法绕过这个问题,拆分上面的第一个命令?

最佳答案

如果将表达式周围的单引号换成双引号,并将 - 周围的双引号换成单引号,则可以转义 $1 并且脚本应该可以工作:

cat input.dat | gnuplot -p -e "set style data histograms; set style histogram cluster gap 1; \
set style fill solid border -1; set boxwidth 0.05; binwidth=0.1 ; \
bin(x,width)=width*floor(x/width) + binwidth/2.0; \
plot '-' using (bin(\$1, binwidth)):(1) smooth freq with boxes"

关于linux - 使用 gnuplot 将命令放在多行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46963553/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com