变量的理解

有点绕多动动手就好了

$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

相关推荐

  • 初学linux你该死记它们

    最笨的方法往往是最好的方法

    Linux笔记 2018-04-08
  • 输入输出重定向

    重定向就是改变默认位置 ps aux 显示进程号 大于号(只处理正确信息),以覆盖的方式把命令输出到指定的文件,如果a > b;c >b;c会把之前a覆盖到b的内容覆盖到。为了保留a和c的数据,这时候用追加的方式解决,双大于号就用以追加的方式 set -c 不能覆盖 set +c 允许覆盖 |> 强行覆盖 清零|> /data/sky…

    Linux笔记 2018-07-30
  • 第一周博客作业-N31-初识Linux

    本篇文章主要围绕计算机的组成及其功能以及Linux的基础命令、目录等进行相关阐述

    2018-07-11
  • mysql 高可用

    实验:集群高可用 一个管理——一个主——两个从 管理 主机 从机1 从机2 1.必须先统一时间,做集群必须时间一致,所有主机做如下操作 所有主机统一ntp服务器时间,写入文件里 前期需要手工同步下 启用ntp服务 2.所有主机关掉iptables 和selinux 3.先做主从复制 主机配置文件 这四项必须写 重启服务 查看主机二进制文件的位置 主机创建账号…

    2018-06-19
  • 压缩,解压缩及归档工具

    压缩,解压缩及归档工具

    2018-04-26
  • linux如何使用命令帮助

    Linux如何使用命令帮助 whatis:显示命令的简短描述 whatis命令在用 catman -w命令创建的数据库中查找command参数指定的命令、 系统调用、库函数或特殊文件名。whatis命令显示手册部分的页眉行。然后可以发出man命令以获取附加的信息。whatis命令等同于使用man -f命令。linux系统刚安装后不可立即使用使用 makewh…

    Linux笔记 2018-05-07