zoukankan      html  css  js  c++  java
  • Bash变量

    Bash的变量

    1. 变量:变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。

    2. 变量设置规则:

      • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。
      • 在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。
      • 变量用等号连接值,等号左右两侧不能有空格。
      • 变量的值如果有空格,需要使用单引号或双引号包括。
      • 在变量的值中,可以使用“”转义符。
      • 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“(变量名”或用){变量名}包含。
      • 如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。
      • 环境变量名建议大写,便于区分。
    3. 变量分类

      • 用户自定义变量
      • 环境变量:这种变量中主要保存的是和系统操作环境相关的数据。部分环境变量名无法修改。允许用户添加新的环境变量。
      • 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
      • 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

      本地变量

      • 变量定义

        [root@localhost ~]#name="shen chao"
        
      • 变量叠加

        [root@localhost ~]#aa=123
        [root@localhost ~]#aa="$aa"456
        [root@localhost ~]#aa=${aa}789
        
      • 变量调用

        [root@localhost ~]#echo $name
        
      • 变量查看

        [root@localhost ~]#set
        
      • 变量删除

        [root@localhost ~]#unset name
        

      环境变量

      1. 环境变量:用户自定义变量只在当前的Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效。

      2. 设置环境变量

        export 变量名=变量值 #申明变量

        env #查询变量

        unset 变量名 #删除变量

      3. 系统常见环境变量

        • PATH:系统查找命令的路径

          [root@localhost ~]#echo $PATH /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
          
        • PATH="$PATH":/root/sh #PATH变量叠加

      4. PS1:定义系统提示符的变量

        d:显示日期,格式为“星期 月 日”
        h:显示简写主机名。如默认主机名“localhost”
        	:显示24小时制时间,格式为“HH:MM:SS”
        T:显示12小时制时间,格式为“HH:MM:SS”
        A:显示24小时制时间,格式为“HH:MM”
        u:显示当前用户名
        w:显示当前所在目录的完整名称
        W:显示当前所在目录的最后一个目录
        #:执行的第几个命令
        $:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”
        

        例:

        [root@localhost ~]#PS1='[u@	 w]$ '
        [root@04:50:08 /usr/local/src]#PS1='[u@@ h # W]$‘
        [root@04:53 上午 localhost 31 src]#PS1='[u@h W]$ '
        

      位置参数变量

      位置参数变量 作用
      $n n为数字,$0代表命令本身,$1-(9代表命令后跟的第一到第九个参数,十以上的参数需要用大括号包含,如){10}.
      $* 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
      $@ 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
      $# 这个变量代表命令行中所有参数的个数

      预定义变量

      1. 预定义变量

        预定义变量 作用
        $? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。
        $$ 当前进程的进程号(PID)
        $! 后台运行的最后一个进程的进程号(PID)
      2. 接收键盘输入

        [root@localhost ~]# read [选项] [变量名]
        

        选项:

        -p      “提示信息”:在等待read输入时,输出提示信息
        -t      秒数: read命令会一直等待用户输入,使用此选项可以指定等待时间
        -n      字符数: read命令只接受指定的字符数,就会执行
        -s      隐藏输入的数据,适用于机密信息的输入
        

        例:

        #!/bin/bash
        # Author: shenchao (E-mail: shenchao@lampbrother.net)
        read -t 30 -p "Please input your name: " name
        #提示“请输入姓名”并等待30秒,把用户的输入保存入变量name中
        echo "Name is $name "
        read -s -t 30 -p "Please enter your age: " age
        #年龄是隐私,所以我们用“-s”选项隐藏输入
        echo -e "
        "
        echo "Age is $age "
        read -n 1 -t 30 -p "Please select your gender[M/F]: " gender
        #使用“-n 1”选项只接收一个输入字符就会执行(都不用输入回车)
        echo -e "
        "
        echo "Sex is $gender"
        
  • 相关阅读:
    【剧透高亮】最最最完整剧透加剧情详细解析
    iOS十六进制和字符串的相互转换
    Swift函数编程之Map、Filter、Reduce
    Swift中的Masonry第三方库——SnapKit
    swift中第三方网络请求库Alamofire的安装与使用
    针对苹果最新审核要求为应用兼容IPv6
    使用 Fastlane 实现 IOS 持续集成
    Fastlane为iOS带来持续部署
    @OBJC 和 DYNAMIC
    swift基本用法-数组array
  • 原文地址:https://www.cnblogs.com/yangyu-IoT/p/12898261.html
Copyright © 2011-2022 走看看