linux变量理解,变量的理解

$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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值