定义变量
变量名=值
注意: 不能有空格
var = 123 这样定义是错误的


查看变量:

以PATH为例
echo $PATH
echo "PATH"
echo ${PATH}

1.单引号与双引号的区别?
    单引号内仅能是一般字符,而不能有特殊字符
    nianxiongdi123@ubuntu:var='\\\\\\\\///\n'
    nianxiongdi123@ubuntu:~$ echo $var
    \\\\\\\\///\n   原样输出

    双引号保留变量的内容,var="lang id $LANG" 得到是lang is en_US
2.变量的累加
    PATH=$PATH:/home/dmtsai/bin
    PATH="$PATH":/home/dmtsai/bin
    PATH={$PATH}:/home/dmtsai/bin
3.单引号和双引号必须成对出现
    name="i love " you "  错误
    name="i love ' you"   正确
4.父进程中变量,子进行要使用,需要在父进行中用export声明
    nianxiongdi123@ubuntu:~$ echo $myname
    123
    nianxiongdi123@ubuntu:~$ export myname   在父进程中证明myname变量
    nianxiongdi123@ubuntu:~$ bash  进入子进程
    nianxiongdi123@ubuntu:~$ echo $myname   在子进程中查询变量
    123
    nianxiongdi123@ubuntu:~$ exit  退出子进程
    exit
5.取消变量
   unset 变量名称
6.查看版本号
    version=$(uname -r) version=`uname -r`


环境变量命令:
查看环境变量命令: env
查看所有变量(环境变量和自定义变量)命令: set

环境变量(列举主要的)1.HOME
    当前用户的主文件夹, 普通用户:/home/用户名  root: /root
 2.SHELL
    默认是/bin/bash
 3.HISTSIZE
    历史命令,记录总条数
 4.MAIL
    邮箱
 5.PATH
   执行查找的路径,目录间用冒号分割(:)
 6.LANG
   编码
 7.RANDOM
   随机数0~32767
   echo $RANDOM
   声明产生0~9随机数:declare -i number=$RANDOM*10/32768;

注意:子进程紧会继承父进程的环境变量,子进程不会继承父进程的自定义变量,需要在父进程export,才能使用
      环境变量相当于全局变量,自定义变量相当于局部变量。



读取变量read:
格式: read [-pt] 变量名
    -p 提示信息
    -t 时间(秒)
    nianxiongdi123@ubuntu:/etc$ read -p "please keyin ..." -t 30 aname
    please keyin ...123
    nianxiongdi123@ubuntu:/etc$ echo $aneme
    123

declare声明:
    declare [-aixr]  变量名
    -a :数组
    -i :整数
    -x :环境变量
    -r :只读

    declare -i sum=100+300+50
    declare +x sum 代表取消x为环境变量 ,注意加号

    nianxiongdi123@ubuntu:/etc$ var[1]='dsadasd'
    nianxiongdi123@ubuntu:/etc$ var[2]='zzzz'
    nianxiongdi123@ubuntu:/etc$ echo ${var[1]}${var[2]}
    dsadasdzzzz



    删除变量字符串

    ${变量#关键字}  从开头到符合要求的最短数据删除
        ${PATH#/*kerberos/bin:}
    ${变量##关键字}  从开头到符合要求的最长数据删除
        ${PATH##/*kerberos/bin:}
    ${变量%关键字}  从末尾到符合要求的最短数据删除
        ${PATH%/*kerberos/bin:}
    ${变量%%关键字}  从末尾到符合要求的最长数据删除
        ${PATH%%/*kerberos/bin:}
    ${变量/旧字符串/新字符串}  旧字符串的第一个被新字符串替换
        echo ${path/sbin/SBIN}
    ${变量//旧字符串/新字符串}  旧字符串的全部被新字符串替换
        echo ${path//sbin/SBIN}


替换:

    nianxiongdi123@ubuntu:/etc$ echo $username   该变量不存在,或者为空

    nianxiongdi123@ubuntu:/etc$ username=${username-root}  不存在的话,把username复制为root
    nianxiongdi123@ubuntu:/etc$ echo $username
    root

    nianxiongdi123 @ ubuntu: / etc$ username = ""   变量为空
    nianxiongdi123 @ ubuntu: / etc$ username =${username - root}  变量存在,但是为空,不予复制
    nianxiongdi123 @ ubuntu: / etc$ echo $username  输出为空

    -------------
    当变量为空的时候复制
    nianxiongdi123 @ ubuntu: / etc$ username =${username :- root}
    nianxiongdi123 @ ubuntu: / etc$ echo $username
    root
    --------------

    -  不存在的时候进行替换
    :  为空的时候或不存在进行替换
    +  变量有值进行替换
    









GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐