变量的理解

有点绕多动动手就好了

$0显示脚本完事路径和文件名
1.#echo $?(判断命令执行是成功0还是失败)
2.#ping 172.20.0.1(测主机是否连通,unreachable目标主机不通) 默认不停的ping, 所以ping -c1,则表示只让它pinf 一次eg:#ping -c3 172.2o.0.1(只ping3次)
3.#ping -c4 172.20.0.1 &> /dev/null
#echo $?(不想显示执行过程&> dev/null)且知道是否执行成功)

4.bash自定义返回状态
exit [n]:自定义退出状态码. eg:写这样一段脚本
#!/bin/bash
ls
exit 10                  (自定义为10是成功。)
hostname           (hostname将不会被执行,因为脚本一旦遇到exit命令会立即终止)
所以其执行如下
[root@centos7 ~]#sh sarg.sh ;echo $?
   40_scp.sh    bin sarg.sh     10   (前面两个是ls命令的结果,但是没有看到hostname的结果用#echo $? 测试,测出的也是ls命令执行是否成功)
5.局部变量要想在当前父进程中生效,则要申明成全局 export name

算术运算:
1.let  有没有let的差异  :
#x=10                           #let z=$x+$y
#y=20                          #echo $z                (let命令能识别变量,所以变量前也可不用加$)
#z=$x+$y                   30                              如 z=$[x+y]   其结果也是
#echo $z                                                              30 
10+20

2.#let x++   (加加相当于x=x+1)
#echo $x
11

3.现在输一字符串lizhihua,让它随机颜色打印?随机可用(RANDOM)
#LIZHHUA=$[RANDOM%7+31];echo -e “\e[1;$[LIZHHUA]mlizhihua\e[0m”
解析:即把颜色(31到37)定义成变量 %是取膜.$[RANDOM%7+31]也可换成(( )) 或{}

4.expr
#expr 1 + 2 #expr 1+2 (expr是个命令,所以后面的几个参数之间必须有空格) #expr 3 \* 2 (相乘*前必须用转义符)
如果是bc 则格式为 #echo ‘算术表达式’|bc eg :#echo ‘3*5’|bc 或#echo “3+5″|bc

 

(二和十进制对比)

二进制:1     1        2    10              3     11               4    100               5     101

6    110               7    111              8   200               9    201              10   210

异或:(前面的命令为真则执行命令2前面为假则不执行)

1.让a,b值互换eg:
a=5;b=6;echo $a $b ;
a=$[a^b]; (a和b异或得C,所以此时a的值是中间值C)
b=$[a^b]; (a的值即中间值C和b异或所以b的结果是旧值a 5)
a=$[a^b]; (a的新值c中间值和b的新值5也就是旧值a异或结果是b的旧值)
echo $a $b 此时两个值已完全对换
6        5
2.#a=4 解析思路:转成二进制4=100 6=110
#b=6 a^b也即 100
#let c=a^b 110 (前对后就不执行,前错后就执行,前错后也错就都不执行)
#echo $c 两种数字相对也就是010 真假真
所以输出结果是2

3.declare let a+=2(加等) 也就是a等于a+2
#declare -i x=10
#declare -i y=20
#declare -i z=x+y
#echo $z
30

4.编写脚本/root/bin/sumid.sh,计算/etc/passwd 文件中的第10个用户和第三世界第三世界20 个用户的ID 之和?
#!/bin/bash
echo “root10 + root20=?”
root10=”`#cat /etc/passwd|head -n10|tail -n1|cut -d : -f3`”
root20=”`#cat /etc/passwd|head -n20|tail -n1|cut -d : -f3`”
AA=$[root10 + root20]
echo $AA
echo “finshied!!!”

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96184

(0)
单爆手单爆手
上一篇 2018-04-15 18:24
下一篇 2018-04-15 20:02

相关推荐

  • 网络基础2

    网络基础2

    Linux笔记 2018-05-01
  • liniux课程第一周总结

    第一天课程内容 MBR分区类型:主分区:1-4,一块硬盘最多4个主分区,不可以分小区,可以用来启动操作系统(系统分区),直接建文件系统,存放数据扩展分区:一块硬盘最多一个扩展分区,可以没有,加主分区最多4个,不能创建文件系统,可以再划分更小的分区(即逻辑分区)逻辑驱动器(分区):可以创建文件系统,存放数据 系统分区:启动操作系统的分区启动分区:安装操作系统的…

    Linux笔记 2018-04-01
  • 文本处理三剑客:sed简介

    文本处理三剑客:sed简介 sed是一种流编辑器,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。 处理过程 sed命令将当前处理的行读入模式空间(pattern space)进行处理,sed在该行上执…

    Linux笔记 2018-04-03
  • linux 的基础命令以及快捷键的总结

    前两张给大家介绍了 计算机的最基础的东西,今天才真正开始学习linux,那么也是linux最基础的东西。 学习了大约两周的时间吧!对于我这个爱国者 英语啥也不懂的来说。好想说声“马哥 能退钱不,我想回农村”, 当然了 这只是个玩笑话,我是谁,” 打不死的小强”,要么你征服我,要么你被我征服 ,对于我来说,前者别想。 言归正…

    2018-07-28
  • linux第三周小结

    本周小结内容包括shell脚本基础知识、文件查找命令locate和find、文本处理工具sed

    Linux笔记 2018-04-15