您的位置:首页 > 运维架构 > Shell

shell入门之----变量

2020-04-19 23:00 459 查看

变量的类型

  • 变量

    bash作为程序设计语言和其它高级语言一样也提供使用和定义变量的功能
  • 预定义变量、环境变量、自定义变量、位置变量

  • 预定义变量
    $? 最后一次执行的命令的返回状态。如果这个变量的值为 0,则证明上一条命令正确执行;如果这个变量的值为非 0 ,则 证明上一条命令执行错误
    $$ 当前进程的进程号(PID)
    $! 后台运行的最后一个进程的进程号(PID)
    
    [root@newrain sh]# ls
    count.sh hello.sh parameter2.sh parameter.sh  #ls命令正确执行
    [root@newrain sh]# echo $?
    0
    #预定义变量"$?"的值是0,证明上一条命令正确执
    
    [root@newrain sh]# vi variable.sh
    #!/bin/bash
    echo "The current process is $$"
    #输出当前进程的PID
    #这个PID就是variable.sh脚本执行时生成的进程的PID
    
    [root@newrain sh]#sleep 3000 &
    [1] 12165
    #符号"&"的意思是把命令放入后台执行
    [root@newrain sh]#echo $!
    12165
    自定义变量
    定义:变量名称=值
    变量名称:只能由字母,数字,下划线组成,不能以数字开头;
    注意:应该让变量名称有意义;
    = 赋值符号 前后不能有空格 ;
    值: 所有的字符串和数字都可以;
    引用变量: $变量名 或 ${变量名}。
    示例:
    [root@newrain ~]# a=100
    [root@newrain ~]# echo $a
    100
    [root@newrain ~]# echo $aa
    # 这里输出为空,因为解释器认为$aa是变量
    [root@newrain ~]# echo ${a}a
    100a
    
    查看变量: echo $变量名 set(所有变量:包括自定义变量和环境变量)
    取消变量: unset 变量名 仅在当前shell中有效
    作用范围: 仅在当前shell中生效
    环境变量
    shell在开始执行时已经定义好的
    env 查看所有环境变量
    set 查看所有变量
    环境变量拥有可继承性:export之后就拥有继承性
    export 导出变量(作用范围)
    临时生效
    [root@newrain ~]# IPADDR=192.168.1.1
    [root@newrain ~]# echo $IPADDR
    192.168.1.1
    永久生效
    写到4个登陆脚本中 ~/.bashrc ~/profile 更好放在/etc/profile.d/* 下建立独立的环境变量配置文件
    常用环境变量:USER UID HOME HOSTNAME PWD PS1 PATH
    PATH:存储所有命令所在的路径
    练习1
    编写一个shell脚本,用于搜集其执行主机的信息,打印结果如下:
    [root@tiger tmp]# ./test.sh
    2012年 05月 24日 星期四 17:07:45 CST
    当前的用户为 root
    当前用户的宿主目录为 /root 用户的标识为 0
    主机名称为 newrain
    网卡的IP地址为 192.168.1.106
    ##脚本源码如下
    #!/usr/bin/bash
    # 获取主机基本信息
    time=`date +%y年%m月%d日-%H:%M`
    ip=`ifconfig eth0|grep inet|awk '{print $2}'` echo "现在的时间是:" $time
    echo "当前的用户是:" $USER
    echo "当前的用户标识:" $UID
    echo "当前的主机名称是:" $HOSTNAME
    echo "当前可用网卡IP是:" $ip
    取根分区剩余空间:
    # df -h /dev/sda2 |awk 'NR==2{print $4}' 371G
    取当前系统剩余内存:
    # echo "现在的剩余内存是:"`free -m |awk 'NR==2{print $4}'`
    现在的剩余内存是:12813M
    取当前cpu平均负载:
    # echo 现在cpu的`uptime |cut -d, -f3-` //-d指定分隔符,-f指定显示区域,3-第三列以后(包括第三列)
    现在cpu的 load average: 0.07, 0.12, 0.11
    # echo 现在cpu的`uptime |awk -F"," '{print $4,$5,$6}'`
    现在cpu的 load average: 0.00 0.04 0.10
    • 点赞
    • 收藏
    • 分享
    • 文章举报
    (帽子先生)牛角尖 发布了32 篇原创文章 · 获赞 5 · 访问量 2137 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: