您的位置:首页 > 运维架构 > Shell

坚持#第221天~零基础自学云计算基础语言应用之Shell3~7节

2017-10-23 11:31 525 查看
免除用户交互及输出处理!

交互情况:passwd改密码,ssh远程登录,vim文本编辑器;

顺序分隔!

是用分号,例子:

X=123;Y=456

mkdir /newdir;cd /newdir

逻辑”与”分隔!

使用&&,例子:

逻辑”或”分隔!

使用||,例子:

简单的判断操作!

组合逻辑分隔,例子:

管道操作!

计算配置目录/etc下包括多少个普通文本(F型; 普通文件):

find /etc -type f | wc -l

stdout与sstderr!

重定向的类型!

根据I/O方向和类别区分:大于号小于号是重定向的操作符

重定向输入!

免交互式:

重定向输出!

覆盖目标文件,追加到目标文件,直接修改文件的效果:

重定向错误!

混合重定向!注意2>&1相当于&>

定义/赋值变量!

注意:等号两边不要有空格,但是运算符+-左右两边要有空格

var1=CentOs是定义变量var1,并赋值CentOs

引用变量!

echo $var1即可,后面要加东西的话用{}把变量括起来:

echo ${var1}6.5,会输出为CentOs6.5字符串;

取消变量!

unset var1回车;退出定义变量的Shell环境时也会自动取消变量;

变量的使用类型!

环境变量!echo $PS1是决定命令行提示串,用env回车可以列出环境变量;

位置变量!在执行脚本时提供的命令行参数:

预定义变量!

用来保存脚本程序的执行信息,直接使用这些变量,不能直接为这些变量赋值;

引号!双引号与单引号!

双引号:允许使用$,可采用\转义

单引号:不允许使用\转义

利用双引号赋值的例子:

A=CentOS6.5回车;

B=$A回车;

echo $B结果是CentOS6.5;

有空格的时候,引号不可省略:

B=$A Server回车会报错说没有找到,因为没有加引号,要写成:

B=”$A Server”回车;

echo $B结果是CentOS6.5Server

常见的转义字符!

普通字符与特殊字符的转换

\n换行符、\t制表位

\#是Linux的注释

转义字符的例子:

A=”a\tb\tc\nd\te”回车

echo -e(因为有转义字符所以要写-e)$A回车

结果是a b c

d e

利用单引号赋值!

例子:

A=CentOS6.5回车

B=’$A Server’回车会原封不动,因为是单引号

echo $B回车

结果是$A Server

变量值及范围控制!read读入变量值!

read取值的用法!

read -p “svr5 login:” YOUR_NAME模拟登陆去用户名

结果是svr5 login:zengye

echo $YOUR_NAME回车

结果是zengye

静默取值!

启用read命令的-s选项:关闭输入回显(从键盘录入信息时,不显示在屏幕上),适合读入敏感信息,提高安全性,例如登陆密码

例子:

read -s -p “Password:” YOUR_PASS回车是模拟登陆取密码;

echo $YOUR_PASS这个是将你的密码输出出来echo$YOUR_PASS回车;

read取值示例!

变量值及范围控制!变量的作用范围!

局部变量:只在定义此变量的当前Shell环境下有效,自定义变量默认都是局部变量;

全局变量:在当前Shell及所有的子Shell环境下都有效,子Shell中若赋值同名变量,与父Shell中的变量无关;

用export发布全局变量例子:

X=123

export Y=456

bash回车进入一个新的Shell环境

echo $X,$Y只会有Y

exit返回原来的Shell环境

echo $X,$Y这个都会有

取消全局变量!

export -n 全局变量名

例子:

export -n Y即可

数值运算及处理!整数运算操作!

计算要使用expr命令

例子:注意运算符左右有空格

X=48;Y=21回车

expr $X + 100 - $y \*(乘法要\*不然会认为是*号) 2 / 7,结果是142

expr $X / $Y除法,取整数,结果是2

expr $X % $Y结果是6

使用$[]算式替换!

例子:

X=48;Y=21

echo $[X+100-Y*2/7]无需转义啦,而且运算符左右两边不用空格啦

结果是142

echo $[X/Y]结果是2

echo $[X%Y]结果是6

echo $[10**3]是10的3次方,结果是1000

整数运算实例!

识别一个整数是奇数还是偶数!

X=48;Y=21

echo $[X%2],$[Y%2]结果是0,1;

识别一个整数是否为7的倍数!

echo $[X%7],$[Y%7]结果是6,0;

自增表达式!

例子:

X=48

echo $[X+=2],结果是50

echo $X,结果是50

echo $[X*=2],结果是100

++i的极简化表示!

例子:

X=48;Y=21

echo $[++X],$[--Y],结果是49,20

++i与i++的区别!

例子:

X=48;echo $[++X],$X结果是49,49

X=48;echo $[X++],$X结果是48,49

使用let命令操作变量!

操作变量值运算,并保存新结果:适用于不需要输出的情况,比如循环次数记录,若要查看结果,可结合echo命令

例子:

X=48;Y=21

let X++,Y/=3

echo $X,$Y结果是49,7

数值运算及处理!使用随机整数!

环境变量有个RANDOM!

在/bin/bash环境可直接使用,每次被调用时,随机生成0~32767之间的一个整数

例子:

echo $RANDOM,$RANDOM即可

扩大随机数的范围!

哈哈,这样的:echo $[RANDOM*RANODM]

设置0~999的随机数:echo $[RANDOM%1000]

设置1~1000的随机数:echo $[RANDOM%1000+1]

数值运算及处理!整数序列!

序列就要使用seq命令了!

默认从整数1开始,缺省的增量步长也是1;

seq命令格式:

seq 末数

seq 首数 末数

seq 首数 步长 末数

从1开始的一组整数!

例子:

seq 4回车,结果是1 2 34不过是回车的形式,太浪费空间了,于是加一个-s’ ’单引号里面一个空格,不要使用回车

seq -s’ ’ 4就是上面的输出结果了;

生成8~10的整数序列:

seq 8 10回车,不等宽,就是不是08

生成08~10的等宽度整数序列,利用-w

seq -w(等宽的形式) 8 10回车即可

生成000~500等宽的整数序列,步长为50

seq -w -s’ ’ 0 50 500回车即可

数值运算及处理!小数!

Bash只支持整数的运算啊,好坑啊,怎么实现小数运算啊?

答:使用bc计算器!

bc计算器还支持管道操作!

小数的比较!

例子:

A=12.34;B=56.78

echo “$A<=$B” | bc结果是1,A小于B

echo “$A>$B” | bc结果是0,A不大于B
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐