• shell脚本变量


    目录

    1.变量的定义

    2.shell脚本中变量的定义方法

    3.变量的转译

    4.Linux中命令的别名设定

    5.用户环境变量的更改

    6.利用命令的执行结果设定变量

    7.脚本函数


    1.变量的定义

    1)定义本身

    变量就是内存一片区域的地址

    2)变量存在的意义

    命令无法操作一直变化的目标:用一串固定的字符来表示不固定的目标可以解决此问题

    2.shell脚本中变量的定义方法

    环境级别

    export a=1

    在环境关闭后变量失效

     用户级别(只针对当前用户生效)

    vim ~/.bash_profile        //shell环境的配置文件

    export a=1

    source .bash_profile         //使配置文件生效

    系统级别

    vim /etc/profile                //系统级别的传参

    export a=2

    source /etc/profile

    vim /etc/profile.d/westos.sh                //自定义自配置文件

    export b=3

     变量名称

    变量名称可包含的字符:字符、_、数字,不能用数字开头

    建议变量名称短全用大写字符,变量名称长用_区分子类,如WESTOS、Westos_Linux、westoS_Linux

    3.变量的转译

    转译

    #                       // 转译单个字符
    ""                           //弱引用,批量转译个数字符 不能转译“\”,“”,“$”,“!”
    ''                                 //强引用

    声明

    echo $ab
    echo ${a}b

    变量的数组

    1. a=(1 2 3 4 5)
    2. a$[a[@]:起始元素id:元素个数]
    3. echo ${a[0]}                //数组中第一个元素
    4. echo ${a[*]} //数组中所有元素
    5. echo ${a[@]} //数组中所有元素
    6. echo ${a[@]:0:3} //数组中13个的元素
    7. echo ${#a[@]} //数组中元素的个数
    8. unset a[n] //删除数组中的第n-1个元素
    9. unset a //删除a这个数组

    4.Linux中命令的别名设定

    1. alias xie='vim' //临时设定
    2. vim ~/.bashrc //只针对于用户生效
    3. alias xie='vim'
    4. vim /etc/bashrc //针对系统所有用户生效
    5. alias xie='vim'
    6. unalias xie //删除当前环境中的alias

    5.用户环境变量的更改

    环境变量:
    用户在操作系统时使用到的命令搜索路径

    设定方式

    1. vim ~/.bash_profile
    2. export PATH=$PATH:/mnt //用户级别
    3. vim /etc/bash_profile
    4. export PATH=$PATH:/mnt //系统级别

    6.利用命令的执行结果设定变量

    直接利用命令执行结果

    1. $(),`` //优先执行
    2. TEST=hostname TEST=$(hostname)

    脚本中的传参

    1. 非交互模式:
    2. $0 is /mnt/test.sh //脚本本身
    3. $1 is westos //脚本后所输入的第一串字符
    4. $2 is linux
    5. $3 is redhat
    6. $* is westos linux redhat //脚本后所输入的所有字符"westos linux redhat"
    7. $@ is westos linux redhat //脚本后所输入的所有字符'westos' 'linux' 'redhat'
    8. $# is 3 //脚本后所输入的字符串个数
    9. 交互模式传参:
    10. read WESTOS //对westos赋值
    11. read -p "please input word:" //输出提示语
    12. -s //隐藏输入内容

    7.脚本函数

    定义:
    程序的别名

    设定方式:
    WORD()
    {
    action1
    action2
    }

    WORD 在脚本中就代表action1 action2这两个动作

    练习脚本

    sh create_user.sh
    Please input username : westos
    westos exist < output >> westos is exist > Please input username :
    westos not existplease input password : 无回显密码
    此用户会自动建立并且密码为提示后设定的密码
    并显示 : westos is created
    并再次提示 Please input username
    Please input username exit
    此脚本退出
    1. ACTION()
    2. {
    3. read -p "please input username: " USERNAME
    4. [ "$USERNAME" = "exit" ] && {
    5. echo exit
    6. exit
    7. }
    8. id "$USERNAME" &> /dev/null && {
    9. echo "$USERNAME" is exist
    10. ACTION
    11. }||{
    12. echo $USERNAME is not exist
    13. read -p "please input password: " PASSWORD
    14. useradd $USERNAME
    15. echo $PASSWORD | passwd --stdin $USERNAME
    16. echo $USERNAME is created
    17. ACTION
    18. }
    19. }
    20. ACTION

    实现的功能是添加和删除用户。用户可以选择添加或删除,如果选择删除,会要求输入用户名,然后进行删除;如果选择添加,则先检查用户是否已经存在,如果存在则提示用户已经存在,如果不存在,则要求输入密码,然后创建用户并设置密码。

    1. echo "[d]elete [A]dd"
    2. read -p "please input action:" ACTION
    3. [ "$ACTION" != "a" -a "$ACTION" != "d" ] && {
    4. echo wrong action
    5. exit
    6. }
    7. [ "$ACTION" = "d" ] && {
    8. read -p "please input username:" USERNAME
    9. id $USERNAME &> /dev/null && {
    10. userdel -r $USERNAME
    11. echo $USERNAME is deleted
    12. }||{
    13. echo $USERNAME is not exist
    14. }
    15. exit
    16. }
    17. [ "$ACTION" = "a" ] && {
    18. read -p "please input username:" USERNAME
    19. id $USERNAME &> /dev/null && {
    20. echo $USERNAME is exist
    21. }||{
    22. read -p "please input password: " PASSWORD
    23. useradd $USERNAME
    24. echo $PASSWORD | passwd --stdin $USERNAME
    25. echo $USERNAME is created
    26. }
    27. exit
    28. }

  • 相关阅读:
    46道史上最全Redis面试题,面试官能问的都被我找到了(含答案)
    numpy教程:The NumPy ndarray
    1990-2021年全国各省外商直接投资水平
    强缓存和协商缓存
    十年数据库专家,呕心力作MySQL技术精粹,薪资直涨3K其实很轻松
    常用的分布式ID解决方案原理解析
    Nginx+Tomcat负载均衡、动静分离集群
    玩全栈,做自己喜欢做的事,写自己喜欢写的代码
    【Java系列】Java虚拟机—类加载器介绍
    Day07 字符串
  • 原文地址:https://blog.csdn.net/m0_64028800/article/details/134084127