变量的理解

有点绕多动动手就好了

$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

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code