shell基础知识【变量&赋值&运算篇】

 

【认识变量】

shell中变量的分类有以下四种:

变量类型 说明及例子
环境变量

不需定义,可全局调用;如#echo "$PATH"

环境变量设置:export 变量名=变量值

环境变量查询:#env

位置参数变量

$n :n为数字,$0代表命令本身,$1~$9代表从第一个到第九个参数,10以后的参数需要使用大括号{},${10}

$* :这个变量代表命令行中所有的参数,并把所有参数看成一个整体

$@:这个变量代表命令行中所有的参数,并把所有参数看成一个整体

$#:代表命令行中所有参数个数

预定义变量

$?:上一条命令的执行结果,默认成功返回0,不成功返回非0值

$$:脚本运行时,系统赋予的进程号

$!:后台运行的最后一个进程的进程号

用户自定义变量

用户自定义,如aa="shuaige";意思是将字符串shuaige赋值给自定义变量aa;在系统中调用时需要在aa前加$;

 

 

 

 

 

 

 

 

 

变量的相关操作:

1、#set  >列出所有变量

2、#A=CentOS  >变量赋值

3、#B="$A server" >引用变量并赋值给新的变量

4、#A="a\tb\tc\nd\te";#echo -e $A  >添加-e选项解析特殊转义符

A="a\tb\tc\nd\te"
echo "$A"

a       b       c
d       e

5、变量赋值的另一种方式:read

命令格式:read [选项] [变量名]

常用选项:

-p :提示信息,等待read输入时,输出提示信息

-t: 秒数,read命令默认会一直等待用户输入,使用此选项可以指定最长等待时间

-n:字符数;read命令只接受指定的字符数,就会执行后续操作

-s ;隐藏输入的数据,适用于机密信息的输入

 

【数值运算及处理】

数值运算方法:expr、(())、$[]、let、bc、awk、typeset

1、expr  >x=48;y=21;expr $x + 100 - $y \* 2 / 9  【注意:expr运算中符号前后有空格,且*需要转义符】

expr $x + 100 - $y \* 2 / 9
144

2、((i=$j+$k))    等价于 i=`expr $j + $k`

((c=$x+$y))
echo "$c"
69

3、$[$x+$y]

aa=$[$x+$y]
echo "$aa"
69

4、let i=x+y

let i=x+y
echo "$i"
69

5、echo "x=48;y=21;$x+$y"|bc  【注意:bc是shell中进行浮点型运算的主要手段】

echo "x=48;y=21;$x+$y"|bc
69
echo "scale=4;x=48;y=21;$x/$y"|bc   #sacle=4;意思是指定保留运算结果四位小数
2.2857

6、awk

cat cj

tx 90 86 86

tx1 89 78 85

tx2 79 80 85   
awk '{print $1,$2+$3+$4,($2+$3+$4)/3}' cj

tx 262 87.3333

tx1 252 84

tx2 244 81.3333

7、typeset|declare

declare 与 typeset 命令是bash的内建命令,两者是完全一样的,用来声明shell变量,设置变量的属性。

typeset -i dd=($x+$y)
echo "$dd"
117

【与运算相关的变量】

echo "$RANDOM" >$RANDOM生成范围是0-32767的随机数,可使用取余取得比此范围小的随机数;亦可以使用$RANDOM*$RANDOM取得更大的随机数范围。

 

【字符串处理】

在笔者之前的文章已经介绍过,shell最主要的操作就是字符串的获取、替换、比较等处理操作,下面内容将介绍字符串的各种操作处理及对应的命令。

var1="CentOS7.0"    #先定义字符串

1、字符串截取操作

方法一:expr substr $var 1 6  >此命令的意思是取变量$var1的第一个到第六个字符

expr substr $var1 1 6
CentOS

方法二:cut

echo "$var1"|cut -d "t" -f2  ##以字符"t"分割字符串$var1,并在分割后取第二个字段
OS7.0

方法三:使用${变量:起始位置:截取长度}

echo ${var1::4}
Cent
echo ${var1:3:4}
tOS7

2、字符替换

var1="CentOS7.0"    #先定义字符串

方法一:${变量/old/new}

echo "${var1/Cen/reh}"   #将变量$var1中Cen字符串变为reh,其余不变
rehtOS7.0

方法二:tr命令

echo "$var1"|tr 'Cen' 'Reh'
RehtOS7.0

【注意:以上命令是字符串的简单操作,对字符串处理的三大神器 grep、awk、sed暂不介绍,在后续的文章再一一揭晓】

【生成随机字符串方式】

方法一:uuidgen

uuidgen
829ef52d-ed20-430a-8dd4-fb65612e7ac8

方法二:md5sum

md5sum校验工具:根据输入文本计算出256位(32位字符)的md5编码值;输入文本有任何差异,编码结果都不一样

echo $RANDOM |md5sum
d7fb19141a7a224a5b09df4c0de94a93  -

以上内容是shell的基础知识,笔者总结并汇总出来,有不对的地方欢迎指正,希望对您有帮助。

你可能感兴趣的:(Linux_shell)