用户变量
Posted 白宫飘红旗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户变量相关的知识,希望对你有一定的参考价值。
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命令
以上是关于用户变量的主要内容,如果未能解决你的问题,请参考以下文章