SHELL变量
分类:linux基础 热度:

SHELL变量
Bash SHELL配置文件
Bash SHELL特殊字符
Bash SHELL脚本基础
==================================================================================
脚本:无需编译,解释执行
 
脚本运行方法:
1. 路径运行法(该脚本必须有执行权限) ./ABC.sh ---->相对路径执行   /A/B/C/DEF.sh---->绝对路径执行
 
2.shell运行法(不需要有执行权限)  bash ABC.sh           bash /A/B/C/DEF.sh
 
==================================================================================
一、SHELL变量
作用: 用一个固定的字符串去表示一个不固定的值
设置、查看、引用、取消
 
变量赋值:
变量名=变量值
 
提取变量:
echo "  "    相对引用        echo ${  }
echo '   '     绝对应用
echo ` `     执行引用        echo  $(   )
 
[root@tianyun ~]# name1=111        //变量赋值
[root@tianyun ~]# name2=222
[root@tianyun ~]# 
[root@tianyun ~]# echo $name1         //引用变量
111
[root@tianyun ~]# echo $name2
222
[root@tianyun ~]# echo ${name2}
222
[root@tianyun ~]# unset name1         //取消变量
[root@tianyun ~]# echo $name1
 
[root@tianyun ~]# ip1=192.168.1.252
[root@tianyun ~]# echo $ip1
192.168.1.252
[root@tianyun ~]# ping $ip1
[root@tianyun ~]# ip1=192.168.1.151          //重新赋值
[root@tianyun ~]# echo $ip1
192.168.1.151
[root@tianyun ~]# ping $ip1
 
[root@tianyun ~]# school=Uplooking
[root@tianyun ~]# echo $school
Uplooking
[root@tianyun ~]# echo "$school1 is good"
 is good
[root@tianyun ~]# echo "${school}1 is good"
Uplooking1 is good
 
分支语句:
单分支:
-----------------------------------
if  [ 条件 ]
then
命令
fi
 
双分支:
-----------------------------------
if [ 条件 ]
then
命令
else
命令
fi
 
多分支:
------------------------------------
if [ 条件 ]
then
命令1
elif [ 条件2 ]
命令2
elif [ 条件3 ]
命令3
else
命令4
fi
 
-------------------------------
#eping
#!/bin/bash
read -p "能输入一个IP吗:" IP
ping -c1 $IP > /dev/null
if [ $? = 0 ]
then
echo "$IP is OK!"
else
echo "$IP is DOWN!"
fi
-----------------------------
$? 值:
0     正常结束,真
1  ~   129      异常退出
130+   中断
-----------------------------
截取的方法:
方法一:
cut  -d " " -f 字段
参数:
-d   指定分割符
-f    第几个字段
-c   截取字符(例如:  cut -c 2-10)(cut -c 5-)
 
方法二:
awk '{print $1 $2 $3}'
注释:截取第一、二、三个字段
---------------------------------
#TOP
#!/bin/bash
echo "您的磁盘使用情况位:"
echo "+-------------------------------------+"
echo -e "`df -hT |awk '{printf "|%10-s|%-10s|%-15s|\n",$5,$6,$7}'`"
echo "+-------------------------------------+"
-----------------------------------
运算:
+ - \* / %
expr  运算表达式
-----------------------------------
数学比较运算符
-eq     等于    equal
-lt       小于    less then
-le      小于等于 less equal
-gt      大于  greater than
-ge     大于等于    greater   equal
-ne     不等于     Not equal
----------------------------------
[root@yunwei ~]# cat /tmp/abc.txt 
#!/bin/bash
if [ $1 -lt $2 ]
then
echo "$1  小于  $2"
else
echo "$2  小于 $1"
fi
------------------------------------
扩展:
统计变量长度:
[root@yunwei ~]# ABC=123
[root@yunwei ~]# echo ${#ABC}
3
[root@yunwei ~]# ABC=1234567
[root@yunwei ~]# echo ${#ABC}
7
-------------------------------------
练习:
#bash SH.sh
请输入身份证号:110108198305070092
 
显示结果:
生日:1983年05月07日   性别:男
 
小要求:
只能输入15或18位身份证号,否则提示错误信息!
 
---------------------------------------
思路:
1.先用if写出15或18位判断
2.截取号码内容并赋给相关变量
3.运算男女
4.提取截取结果
5.汇总显示
----------------------------------------
      1 #!/bin/bash
      2 read -p "请输入一个身份证号:" a
      3 if [ `echo ${#a}` -eq 18 ]
      4 then
      5 b=`echo $a | cut -c 7,8,9,10`
      6 c=`echo $a | cut -c 11,12`
      7 d=`echo $a | cut -c 13,14`
      8 aa=`echo $a | cut -c 17`
      9 echo "生日:$b年$c月$d日"
     10 if [ `expr $aa % 2` -ge 1 ]
     11 then
     12 echo "性别:男"
     13 else
     14 echo "性别:女"
     15 fi
     16 elif [ `echo ${#a}` -eq 15 ]
     17 then
     18 e=`echo $a | cut -c 7,8`
     19 f=`echo $a | cut -c 9,10`
     20 g=`echo $a | cut -c 11,12`
     21 bb=`echo $a | cut -c 15`
     22 echo "生日:19$e年$f月$g日"
     23 if [ `expr $bb % 2` -ge 1 ]
     24 then
     25 echo "性别:男"
     26 else
     27 echo "性别:女"
     28 fi
     29 else
     30 echo "请输入正确的身份证号码"
     31 bash /root/桌面/sh.sh
     32 fi 
----------------------------------------------------------------------------
      1 #!/bin/bash
      2 read -p "请输入身份证号码:" ABC
      2.2 grep "[0-9]*" $ABC
      2.3 [ $? -ne 0 ]  && echo "请输入合法的身份证号";exit   
      3 [ ${#ABC} -ne 15 -a ${#ABC} -ne 18 ] && echo "请输入正确的号码!";exit
      4 [ ${#ABC} -eq 18 ] && SEX=$(echo $ABC|cut -c 17) || SEX=$(echo $ABC|cut -c 15)
      5 [ `expr $SEX % 2` -eq 1 ] && SEX="男" || SEX="女"
      6 [ ${#ABC} -eq 18 ] && DATE1=$(echo $ABC|cut -c 7-14) ||DATE1=`"19"$(echo $ABC|cut -c 7-12)`
      7 echo "生日: $(echo $DATE1|cut -c 1-4) "年" $(echo $DATE1|cut -c 5-6) "月" $(echo $DATE1|cut         -c 7-8) "日"    $(echo $SEX)"
上一篇:源码包tarball 下一篇:进程管理
猜你喜欢
各种观点
热门排行
精彩图文