• Shell变量相关


    li@ubuntu:~/test$ vi test.sh
    li@ubuntu:~/test$ cat test.sh
    #!/bin/bash
    
    #shell变量不加引号;加单引号;加双引号都行
    url=www.baidu.com
    echo $url
    
    name='百度网'
    echo $name
    
    author="百度"
    echo $author
    
    author="Nichols"
    echo ${author}
    
    #单引号和双引号的区别
    url="www.qq.com"
    website1='腾讯网:${url}'
    website2="腾讯网:${url}"
    echo $website1
    echo $website2
    
    li@ubuntu:~/test$ ./test.sh
    www.baidu.com
    百度网
    百度
    Nichols
    腾讯网:${url}
    腾讯网:www.qq.com
    li@ubuntu:~/test$ 

    只读变量

    使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

    li@ubuntu:~/test$ vi t.sh
    li@ubuntu:~/test$ cat t.sh
    #!/bin/bash
    
    #只读变量
    myName="Nicholas"
    readonly myName
    myName="Nicholafs"
    li@ubuntu:~/test$ /bin/sh t.sh
    t.sh: 6: t.sh: myName: is read only
    li@ubuntu:~/test$ 

    删除变量

    变量被删除后不能再次使用;unset 命令不能删除只读变量。

    li@ubuntu:~/test$ vi t.sh
    li@ubuntu:~/test$ cat t.sh
    #!/bin/bash
    
    #删除变量
    myName="Nicholas"
    myYear="18"
    unset myName
    echo $myName
    echo $myYear
    
    li@ubuntu:~/test$ ./t.sh
    
    18
    li@ubuntu:~/test$ 

    补:

    以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。这种方式比较适合定义显示纯字符串的情况,即不希望解析变量、命令等的场景。

    以双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令并且想将其解析后再输出的变量定义。

    变量类型

    运行shell时,会同时存在三种变量:

    1) 局部变量

    局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

    2) 环境变量

    所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。

    3) shell变量

    shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

  • 相关阅读:
    C#:反射
    静态和非静态类
    数据的存入取出(注册机方式)
    退出unity运行
    网络流基础
    欧拉回路
    博弈论问题
    洛谷P5304 [GXOI/GZOI2019] 旅行者
    [ZJOI2006]物流运输
    POJ3278 Catch that cow
  • 原文地址:https://www.cnblogs.com/wydxry/p/8492446.html
Copyright © 2020-2023  润新知