zoukankan      html  css  js  c++  java
  • 【shell编程基础1】shell变量篇

    Bash shell

    bash shell 是bourne shell 的升级版,“bourne again shell”.ubuntu的默认shell。

    • 预备知识

    1. "#!" 名为“sha-bang”,shell编程的开始。本质是一个2字节的文件特殊标记,加上这个能够让系统知道这个是一个科执行的脚本。具体参考man magic.这里注意 "#!"后边的路径必须正确。

    2. 执行脚本:

    (1)可以使用chmod给.sh文件加上可执行权限,然后直接使用 ./script.sh 来执行该脚本。

    (2)使用 "bash script.sh"来直接执行。

    (3)使用source执行

    3. 查看电脑支持哪些shell cat /etc/shells

     本文主要讲解shell变量的创建,变量设置规则,还有环境变量。


     本文的知识主要来自《鸟哥的私房菜》

    • shell变量

    1. 变量的读写

    读变量:用 $变量名 或者 ${变量名} 来读取变量的内容

    写变量:用 “=”连接变量名和他的内容

    1. 变量设置的规则
    • 以 “=” 相连,但是不能有空格
    • 存在空格的时候,使用双引号“”或者单引号‘’将变量内容结合。双引号内部保留特殊字符的性质,单引号则不保留,一律视为纯文本。
    • 转义字符 针对特殊字符
    • 变量内容有其他的命令提供,则使用$(命令) 或者 命令 注意后的这个是反引号
    • 增加变量的内容 PATH=$PATH:/home/bin
    • 使用export设置为环境变量

    uname -r 获取当前linux的内核版本

    下图中的代码可以看出双引号和单引号的差别:

    • 环境变量的功能

    env 或者 export 来查看环境变量的内容

    一些常用的变量:

    变量名字意义
    PS1 设置命令提示符的名字
    $ 目前shell的进程号
    关于上一个执行命令的回转码
    $0 程序名字
    $1-$9 程序参数

    这里可以使用PS1来修改为自己喜欢的命令提示符。

    文件:用户目录下的 ~/.bashrc 环境变量:PS1

    我的修改:PS1='u@h A ##:w$ ' 将这个修改写到~/.bashrc文件下面,以后命令提示符就一直都是自己喜欢的那个样子了。

    子进程只继承父进程的环境变量,子进程不会继承父进程的自定义变量。export可以将自定义变量设置为环境变量。

    语系变量使用 locale命令来设置和查看

    • 从键盘读取的变量

    1. read
    read -pt
    -p 后面接提示符,告诉用户输入什么值
    -t 后面接等待的秒数。不一直等待用户
    1. declare/typeset 声明变量的类型
    -a 将变量声明为数组类型
    -i 将变量声明为整数类型
    -x 等同于export,将变量声明为环境变量
    -r 将变量设置为热爱动力与类型

    这里需要说明的是,shell中的变量缺省类型是字符串类型的。 declare +x 可以取消其环境变量属性。

     

    • 变量删除,替代与替换
    #从头开始
    ${变量#关键字}    从头开始数据匹配关键词,则将符合关键词最短的删除
    ${变量##关键词}    从头开始数据匹配关键词,则将符合关键词最chang的删除
    
    #从尾开始
    ${变量%关键字}    从尾开始数据匹配关键词,则将符合关键词最短的删除
    ${变量%%关键词}    从尾开始数据匹配关键词,则将符合关键词最chang的删除
    
    #替换
    ${变量/旧字符串/新字符串}  替换一个
    ${变量//旧字符串/新字符串}  替换多个

    变量的测试和内容替换

    变量设置的方式   str没有设置 str为空字符串 str已经设置,并且非空
    var=${str-expr} var=expr var= var=$str
    var=${str:-expr} var=expr var=expr var=$str
    var=${str+expr} var= var=expr var=expr
    var=${str:+expr} var= var= var=expr
    var=${str=expr}

    str=expr

    var=expr

    str不变

    var=

    str不变

    var=$str

    var=${str:=expr}

    str=expr

    var=expr

    str=expr

    var=expr

    str不变

    var=$str

    var=${str?expr} expr输出到stderr var= var=str
    var=${str:?expr} expr输出到stderr expr输出到stderr var=str
  • 相关阅读:
    Linux常用命令
    杀死进程端口
    Spring boot项目的打包发布
    关于xshell和文件传输相关
    Windows10开发环境搭建
    Windows10设置系统参数
    windows10禁止更新
    Postgresql9.6基础使用(Windows 解压版)
    (转载)Thingsboard入门教程:本地环境搭建和源码编译安装,献给thingsboard编译失败的同学,教程不断完善中,文章最后是thingsboard常见编译失败的问题总结
    系统同时安装 Open JDK and Oracle JDK(Ubuntu16.04)
  • 原文地址:https://www.cnblogs.com/panhao/p/5312955.html
Copyright © 2011-2022 走看看