坚持#第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
交互情况: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
相关文章推荐
- 坚持#第224天~零基础自学云计算基础语言应用之Shell18~22节
- 坚持#第220天~零基础自学云计算基础语言应用41~43节and Shell的1~2节
- 坚持#第222天~零基础自学云计算基础语言应用之Shell8~12节
- 坚持#第225天~零基础自学云计算基础语言应用之Shell23~27节
- 坚持#第227天~零基础自学云计算基础语言应用之python6~7节and1~3节
- 坚持#第223天~零基础自学云计算基础语言应用之Shell13~17节
- 坚持#第218天~零基础自学云计算基础语言应用31~35节
- 坚持#第219天~零基础自学云计算基础语言应用36~40节
- 坚持#第215天~零基础自学云计算基础语言应用16~20节
- 坚持#第226天~零基础自学云计算基础语言应用之python1~5节
- 坚持#第214天~零基础自学云计算基础语言应用11~15节
- 坚持#第231天~零基础自学云计算基础语言应用之python第7节
- 坚持#第229天~零基础自学云计算基础语言应用之python第5节
- 坚持#第232天~零基础自学云计算基础语言应用之python第8节
- 坚持#第234天~零基础自学云计算基础语言应用之python第10节(最后一节啦)
- 坚持#第213天~零基础自学云计算基础语言应用6~10节
- 坚持#第228天~零基础自学云计算基础语言应用之python第4节
- 坚持#第216天~零基础自学云计算基础语言应用21~25节
- 坚持#第212天~零基础自学云计算基础语言应用1~5节
- 坚持#第233天~零基础自学云计算基础语言应用之python第9节