Shell编程之Bash变量

摘要:介绍bash变量,概念,分类。详细说明用户变量,环境变量和预定义参数变量(位置参数变量)

一 Bash变量

    1.变量:是计算机内存的单元,存放的值的可以改变。
    2.变量命名规则 
         变量可以用字母,数字,下划线组成。但不能用数字开头
         变量名在有效范围是唯一的
         一般命名要有相关含义
         (Bash中,变量默认是字符串型  弱类型(变量可以模糊定义)
    3.变量分类
        用户自定义变量
        环境变量:主要保存和系统操作环境相关的数据。变量可以自定义,但对系统生效的环境变量名和变量作用是固定的
        预定义变量:Bash中已定义好变量,变量名不能自定义,变量作用固定  ( 位置参数变量:用于向脚本当中传递参数或数据(属于预定义变量))
二 用户自定义变量
    1.定义变量
         变量名=变量值
         1. declare [+/-] [] 变量名  声明变量类型
              - 设定变量类型属性
              + 取消变量类型属性
              -a 数组型声明
              -i 整数型声明
              -x 环境变量声明
              -r 只读变量声明
              -p 显示指定变量被声明的类型
         2. read 变量名   读入变量,给变量赋值(从接收键盘收入)
               -p "提示信息"   :在等待read输入时,输出提示信息
               -t 秒数  : 指定用户输入等待时间(默认一直等待)
               -n 字符数(num)   : 接受指定的字符数后自动执行
               -s  : 输入信息隐藏
    2.变量调用
         echo $变量名
          $  调用变量值 aa=123 echo $aa (输出 123)
          '' 单引号 aa=123 echo '$aa' (输出 $aa(即单引号里特殊符号失效))
          ""双引号 aa=123 echo "$aa" (输出 123)
          ``反引号 aa=`ls` echo $aa (输出相当执行命令ls)
          $() aa=$(ls) echo $aa (输出相当执行命令ls)
    3.变量叠加
         x=123 x="$x"456(x=${x}456) echo x=123456
    4.变量查看
         set 查看所有变量
              -u 设定 设定后,调用未声明变量会报错。(默认无提示)
         unset 变量名
三 环境变量
    相对用户自定义变量,环境变量可以在是全局的。
    1.定义环境变量
         export 变量名=变量值 (export实际执行的是declare -a)
    2.变量查看
         env 仅查看环境变量
               PATH变量:系统搜索命令路径              
                                       
              PS1变量:当前登录界面提示符
              
                   \d:显示日期。格式"星期 月 日"
                   \H:显示完整主机名
                   \t:显示时间(HH:MM:SS)
                   \A:显示当前时间(HH:MM)
                   \u:显示当前用户名
                   \w:显示当前所在目录完整名称
                   \W:显示当前所在目录最后一个目录
                   \$:提示符 (root显示"#",普通用户显示"$")
    3.环境变量配置文件
         1.环境变量立即生效
               source 配置文件
         2.登录完成时起作用
              其中/etc/file的环境变量文件对所有用户生效,~/.file仅对对应用户起作用。
             正常用户登录从/etc/profile开始读取 切换用户登录从/etc/bashrc进入
 
 
                 
              /etc/profile 主要定义USER,LOGNAME,MAIL,PATH,HOSTNAME,HISTSIZE,umask,执行/etc/profile.d/*.sh
              /etc/profile.d/*.sh (其中语系变量lang.sh->/etc/sysconfig/i18n)
                    locale   查询系统当前语系( /etc/sysconfig/il8n  开机系统默认语系所在文件)
                         (LANG 定义系统主语系的变量(当前) LC_ALL 定义整体语系变量
                         -a | more  查看支持的所有语系
              ~/.bash_profile 用户家目录bin添加到PATH 执行~./bashrc
             ~/.bashrc 调用命令别名
              /etc/bashrc 定义PS1 (umask PATH 调用/etc/profile.d/*.sh 条件性生效(非正常登录))
         3.其他环境变量
              1.注销时执行环境配置文件 .bash_logout
              2.登录信息 
                    本地终端提示信息 /etc/issue(以下转义符只对此文件有效)
                                              
                   远程终端登录信息 /etc/issue.net (默认不显示 添加/etc/ssh/sshd_config Banner /etc/issue.net 重启ssh)
                   登录后信息显示 /etc/motd 
四 位置参数变量(属于预定义变量)
位置参数变量
作用
$num($0,1,2...) $0代表命令本身 $1-$9代表第1到第9个参数,10以上用数字加大括号${n} 
$* 代表命令中行所有参数$*把所有参数看成一个参数整体
$@ 也代表命令行中所有参数,$@把每个参数区分对待
$# 代表命令行中所有参数个数
理解$num参数


理解$* $@ $#三个参数


区分$*和$@参数


五 预定义变量
预定义变量 作用
$? 每次执行命令的正确与否,会给变量?赋值。如果?为0,则证明执行正确。否则错误
$$ 存储当前进程号(PID)
$! 存储后台的最后一个进程的PID

理解$?

理解$$


理解$!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值