简单函数绘图

简单函数绘图

直接使用plot sin(x)就可以绘制出正弦图像;

而放大后会发现采样点比较小,此时可以使用set samples 500来增加采样点数,然后使用replot就可以重绘图性能了。

其实刚开始是有个类似Matlab中的legend位于右上方的,这个在gnuplt中成为key,我们只要使用unset key就可以暂时不显示了。

然后我们添加上标题和xy轴的信息。

set title ‘sin(x)’

set xlabel ‘x’

set ylabel ‘y’

replot

设置坐标取值范围

set xrange [xmin:xmax]

设置坐标上的刻度

set xtics pi

最好用的一个特性是直接可以对一个文件进行绘图,默认是用点绘,可以加上with lines来连接各个点。Gnuplot大约支持你30多种画图方式,默认为points方式,可以使用help来查看其它的画图方式。

基本脚本编译

基本脚本编译

8.1 使用多条命令

       如果需要执行多个命令,只需用分号隔开即可。但是要注意命令行的最大字符不能超过255个字符。

8.2 创建脚本文件

       第一行为#!/bin/bash,一般#为注释行,但是第一行是个特例,#后面跟的!告诉shell运行下面的shell,紧接着下一行可以写一行注释用于说明该shell的作用。

       如果要执行需要绝对路径或者将该路径添加到PATH环境变量中。

8.3 显示消息

       可以使用echo what you want to show 来显示你想显示的信息,默认是不需要用引号来标记的,但是如果字符串中有了引号,就需要用引号来标记了。

       另外如果想让echo命令结果和echo文本字符串在一行可以使用-n参数,不换行操作。

8.4 使用变量

8.4.1 环境变量

       echo HOME $HOME

如果使用echo “my HOME is $HOME”,也可以识别,但是这里有个缺陷,比如,你输入echo “This cost of the item is $15”,如果定义过15这个环境变量,有可能会被替换掉,所有可以使用\来防止当作环境变量echo “This cost of the item is \$15”

8.4.2 用户变量

       用户变量可以是由不超过20个字符的字母、数字或下划线组成的文本字符串。用户变量区分大小写

       shell脚本自动为变量值确定数据类型。

8.4.3 反引号

       反引号允许将shell命令的输出赋值给变量。尽管这看起来好像意义不大,但是在脚本编程中,它是主要的构件。

       比如:dateok=`date`,就会运行反引号符号的命令并把结果赋值给变量dateok

8.5 重定向输入输出

8.5.1 输出重定向

date > log        :将日期写入log,如果log存在会覆盖掉

date >> log :将日期追加写入

8.5.2 输入重定向

       输入重定向是输出重定向的相反过程。输入重定向不是将命令的输出重定向到一个文件中,而是将一个文件的内容重定向到一条命令中。

       形式为:command < inputfile

       比如$ wc < filename,就可以输出filename的行数、字数、字符数的统计信息。

       还有一种重定向为内置输入重定向(inline input redirection)。这种方法允许在命令行中而非文件中为输入重定向指定数据。内置输入重定向符号是两个<<,除了这个符号,还需要指定一个文本标记来说明输入数据的开始和结尾。

       形式为:

$ command << marker

Data

Data

Data

marker

比如一个实例为:

$wc << EOF

>test string 1

>test string 2

>test string 3

>EOF

8.6 管道

       管道传送为将输出重定向到另一条命令,而不是将命令的输出重定向到一个文件。

       不要认为管道传送是一个一个地运行两个命令,Linux系统实际上同时运行两条命令,并在系统内部把它们连接在一起,第一条命令生成输出时,输出就立即发送给第二条命令,没有使用中间文件或者缓冲区来传送数据。

8.7 学计算

8.7.1 expr命令

       expr命令允许处理命令行中的等式,但是很笨拙,也能够区分一些不同的数学操作符和字符串操作符。

       例如,如果计算5*6,需要为expr 5 \* 6 ,而不能是expr 5*6,这会导致直接输出5*6,而中间用空格分开还必须防止*被误解,需要加上\

8.7.2 使用括号

       一种计算数学等式更简单的方法是,使用美元符号和方括号。例如a=$[5*8],当然这里就不用在担心*被误解的情况了。

8.7.3 浮点解决方案

       比较普遍的解决浮点的方案是使用内置的bash计算机,即bcBash计算器其实是一种编程语言,该语言允许在命令行中输入浮点表达式,然后解释表达式并计算它们,最后返回结果。Bash计算器可以识别:

l  数字(整数和浮点);

l  变量(简单变量和数组);

l  注释(以#符号开始的行或C语言的/**/对)

l  表达式;

l  编程语句(如if-then语句);

l  函数。

 

浮点运算被称为scale的内置变量控制,默认值为0,所以你计算1/3将为0,需要设置scale=N,然后1/3的精度就为小数点后N位。

       bc –q可以禁止bash计算器的冗余欢迎标语。

在脚本中使用bc

#!/bin/bash

var1=`echo “ scale=4;3.44/5” | bc`

echo The answer is $var1

对于简单的计算还好,但是如果计算很复杂,我们可以使用内置的输入重定向方法,而不使用文件重定向。例如:

#!/bin/bash

var1=10.46

var2=43.67

var3=33.2

var4=71

 

var5=`bc <<EOF

scale = 4

a1 = {$var1 & $ var2}

b1 = {$ var3 * $ var4}

a1+b1

EOF

`

echo The final answer for this message is $var5

       使用该种技术,可以在脚本中把每个操作和表达式放在单独的行中,使其更加清晰并便于阅读。

8.8 退出脚本

       在我们前面的脚本中,执行完最后一条命令,就终止了脚本,其实我们可以用一种更优雅的方式来完成。      

8.8.1 核对退出状态

       Linux提供$?特殊变量来保存最后一条命令执行结束的退出状态,如果想核对一条命令的退出状态,必须在这条命令运行完成之后立即查看或使用变量$?。它会改变为shell执行的最后一条命令的退出状态值。

       按照惯例,一条命令成功完成的退出状态时0。如果命令执行错误,那么退出状态会是一个正整数。范围在0~255

       Linux退出状态代码:

代码

描述

0

命令成功完成

1

通常的未知错误

2

误用shell命令

126

命令无法执行

127

没有找到命令

128

无效的退出参数

128+x

使用Linux信号x的致命错误

130

使用Ctrl-C终止的命令

255

规范外的退出状态

8.8.2 退出命令

       我们可以使用exit N命令来指定一个退出状态,不过如果N超过了255,那么将返回一个对256取模以后的值。