变量的理解

有点绕多动动手就好了

$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

相关推荐

  • 第四周课程总结

    sed高级编辑命令模式空间相当于正在处理数据的这块空间保持空间相当于仓库,临时存放暂时没有处理完的半成品的空间P(大写):打印模式空间开端至\n内容,并追加到默认输出之前(即只打印第一行)h: 把模式空间中的内容覆盖至保持空间中H:把模式空间中的内容追加至保持空间中g: 从保持空间取出数据覆盖至模式空间G:从保持空间取出内容追加至模式空间x: 把模式空间中的…

    Linux笔记 2018-04-22
  • LVS负载调度器,

    集群概念 LVS介绍 LVS实现 ldirectord

    Linux笔记 2018-07-01
  • 如何制作Linux服务脚本

    Linux服务脚本示例

    2018-05-10
  • 测试

    测试

    Linux笔记 2018-07-22
  • Linux发行版之间的联系和不同

    Linux发行版以及不同发行版本之间的联系和不同 Linux来源 Unix—minix—Linux tovalds-(1991)—Linux—GNU (GPL) 今天的Linux=Linux内核+GNU应用 1991年后诞生的Linux(一部分著名的Linux发行版):RedHat 、Fedora 、suse 、红旗 、debian 、Ubuntu  Lin…

    2018-06-27