变量的理解

有点绕多动动手就好了

$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
下一篇 2018-04-15

相关推荐

  • 第四周作业—用户权限管理和正则表达式练习

    权限管理、正则表达式练习

    Linux笔记 2018-06-01
  • Linux第一周命令总结

    hostname  完整主机名  cat +文件路径 可查看文件信息 cat /etc/centos-release 查看文件  版本的名称、发行时间所有shell cat/etc/shells  显示当前系统使用的 lsd_release -a  命令  查看版本 /etc/centos-release 是文本文件  cat是查看文本的命令 uname-r…

    2018-07-22
  • N31第六周作业

    本周(7.23–7.29)第六周 1、简述osi七层模型和TCP/IP五层模型 OSI 七层模型 1、应用层:OSI 参考模型中最靠近用户的一层,为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。 2、表示层:提供各种用于应用层数据的编码和转换功能,确保一个…

    Linux笔记 2018-08-01
  • 第五周

    第五周作业 简述rpm与yum命令的常见选项,并举例 Rpm: -a, –all                        查询/验证所有软件包 -f, –file                       查询/验证文件属于的软件包 -g, –group                      查询/验证组中的软…

    Linux笔记 2018-07-23
  • SSH端口转发

    本地端口转发,远程端口,动态端口

    2018-05-22