用户变量

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

值时通过等号赋给用户变量。在变量、等号和值之间不能出现空格

var1=10

shell脚本会自动决定变量值的数据类型。

2.引用一个变量值时需要使用美元符,而引用变量来对其进行赋值时则不要使用美元符

value1=10
value2=$value1

 

  反引号

反引号(`)允许你将shell命令的输出赋给变量。

必须用反引号把整个命令行命令圈起来:test=‘date’ 

#!/bin/bash
today=`date+%y%m%d`
ls /usr/bin -al > log.$today

重定向输入和输出

1.输出重定向

重定向最基本的类型是将命令的输出发到一个文件中。(>)

command>outputfile

date>test6

如果输出文件已经存在,则重定向操作符会用新的文件数据覆盖已经存在的文件:

要想将命令的输出追加到已有文件中,可以用双大于号(>>)来追加数据:

date >> test6

2.输入重定向------》将文件的内容重定向到命令。(<)

command<inputfile
wc<test6

wc命令提供了对数据中文本的技术,默认输出3个:

1.文本的行数
2.文本的词数
3.文本的字节数

管道

command1|command2

将一个命令的输出重定向到另一个上。linux系统实际上会同时运行两个命令,在系统内部将他们连起来,在第一个命令产生输出的同时,输出会被立刻送给第二个命令。传输数据不会用到任何中间文件或缓冲区域。

expr命令

expr 5 * 2

注意:乘号利用反斜线(转义字符)来识别容易被shell错误解释的任意字符。

在bash中,将一个数学运算结果赋给某个变量时,你可以用美元符和方括号($[operation])将数学表达式圈起来。

如:

var1=$[1+5]

注意:在使用方括号来计算公式时,不用担心shell会误解乘号或其他符号。shell知道它不是通配符,因为在括号内。

var2=$[$var1*2]

但bash只支持整数运算。

bash计算器:简称bc。允许你在命令行输入浮点表达式、解释表达式、计算并返回结果的一种编程语言。

bc
12*5.4
quit

要退出bash计算器,你必须输入quit。

浮点运算是由一个内建的称为scale的变量控制。你必须将这个值设置为结果里你想要的小数后的位数,否则你不会得到想要的结果的:

3.44/5
0
scale=4
3.44/5
.6880
quit

scale变量的默认值是0.在scale值被设置前,bash计算器输出的没有小数点后的位置。

bash计算器还能支持变量:

var1=10
var1*4
40
var2=var1/5
print var2
2
quit

一旦变量的值被定义了,你就可以在整个bash计算器会话中使用变量了。

在脚本中使用bash:

可以利用反引号来运行bc命令并将输出赋给一个变量。

var=`echo “options;expression” | bc`

第一个options允许你来设置变量,如果你需要设置不止一个变量,可以用分号来分开他们。

var1=100
var2=45
var3=`echo "scale=4;$var1 / $var2" |bc`
echo The answer for this is $var3

这个方法适合较短的运算,当较长的运算时,最好利用内联输入重定向。

var=`bc <<  EOF
options
statements
expressions
EOF
`

EOF文本字符串标识了内联重定向数据的开始和结尾。记住仍然需要反引号来将bc命令的输出赋给变量。

ar1=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 reslut is $var5

注意:在bash计算器中创建的变量只在bash计算器中有效,不能在shell脚本中使用

查看退出状态码

$?专属变量来保存上个执行的命令的退出状态码。

 date
Mon Nov  7 23:08:39 HKT 2016
 echo $?
0

按照惯例,一个成功结束的命令的退出状态码是0,如果一个命令结束时有错误,退出状态码中就会有一个正数值:

 asdfg
bash: asdfg: command not found
echo $?
127

无效命令会返回一个退出状态码127.

exit命令

原文地址:https://www.cnblogs.com/Caden-liu8888/p/6017543.html