• 自学Linux Shell11.3-使用变量


    点击返回 自学Linux命令行与Shell脚本之路

    11.3-使用变量

    Shell脚本的执行通常可以采用以下几种方式:
        1):bash script-name或sh script-name(推荐使用)
        2):path/script-name 或./script-name(当前路径下执行脚本)
        3):source script-name或 . script-name #→注意”.”点号。
        4):sh<script-name或cat scripts-name|sh(同样适合bash)

    定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:

               your_name="runoob.com"

    变量名的命名须遵循如下规则

    • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
    • 中间不能有空格,可以使用下划线(_)
    • 不能使用标点符号
    • 不能使用bash里的关键字(可用help命令查看保留关键字)
    • 变量名和等号之间不能有空格
    • 如果一行只有一条命令,则每一行不用以分号结尾,每一条命令以换行分隔
      如果一行有多条命令,则每一条命令以分号分隔,但建议每行只有一条命令

    1.普通变量:
    1.1 环境变量:变量必须是大写

    • 配置永久性的环境变量,全局变量的配置文件:/etc/profile 、/etc/bashrc 基本上使用 /etc/profile
    • 配置用户的环境变量的配置文件,分别是:用户的主目录下的隐藏文件:~/.bash_profile 、 ~/.bash_bashrc
    • 临时设置 # export ZSY=1
    • 设置所有用户生效的目录 :/etc/profile.d/ :目录下必须是脚本否则无法使用
    • 如果写一个JAVA的脚本,要把JAVA环境变量放入脚本内,特别是定时任务执行的时候
    • 显示环境变量:
      # env //* 显示的环境变量
      # set //* 显示的环境变量更多
    • 取消环境变量
      # unset <环境变量名> //* 临时取消变量
         进入文件删除变量

    1.2 环境变量的意义:

    • UID :当前用户的UID
    • USER :当前登录的用户
    • HOME :当前的用户主目录
    •  _= :上一条命令的最后一个参数
    • BASH :调用实例时使用的全路径
    • PS1 :当前的终端
    • PATH :命令所在路径

    1.3 局部变量:

    • 一般连续的字符串,数字,路径等可以不加任何引号,不过无引号的情况最好用双引号替代之。
    • 如果变量中使用其他变量时,则不可以使用单引号否则无法使用:如下:

    • 如果变量中有空格的话,就必须使用双引号否则无法输出:如下:

    1.4 引号的意义

    • 无引号:把内容输出出来,会将未含有空格的字符串视为一个整体输出; 如果有命令(要在反引号中的)、变量、特殊转义符解析出结果然后子在输出最终内容来,如果字符串中有空格等特殊字符则则不能完整输出,需要加双引号,一般连续的字符串,数字,路径等可以不加任何引号, 不过无引号的情况最好用双引号替代之。
    • 单引号:可以说是所见即所得:即将单引号内的所有内容都原样输出,或者描述为里面看到的是什么就会输出什么
    • 双引号:把双引号内的所有内容都输出出来;如果有命令(要在反引号中的)、变量、特殊转义符解析出结果然后子在输出最终内容来
    • 反引号:一般用于执行命令,执行的时候命令会执行,同理可以使用 a=$(ls):结果相同 (注意反引号是键盘~下面的`)

    1.5 变量定义小结:
    普通变量:
        a=1 连续的数字字符串
        a="/etc/rc.local $USER" 解析结果后输出
        a='$USER' 原样输出
    命令内容定义:
        a=`ls` 反引号 //* 将反引号中字符当做命令输出 
        a=$(ls)

    2. 特殊变量:
    2.1 位置变量

    • $n 获取当前执行的shell脚本的第n个参数值(参数值默认以空格区分,如果参数加了双引号,则将双引号的整个作为一个参数, 不管其中是否有空格),n=1..9 ,当 n 为0时表示脚本的文件名,如果n大于9,用大括号括起来${10},参数以空格隔开。
    • $0 获取当前脚本本身的名字
    • $1 获取当前传递给该shell脚本的第一个参数
    • $2 获取当前传递给该shell脚本的第二个参数
    • $# 获取当前传给脚本的参数个数
    • $$ 获取当前脚本运行的当前进程 PID 号
    • $@ 获取当前传给脚本的所有参数的列表
    • $* 获取当前以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
    • $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

    例1:

    例2:

    例3:

  • 相关阅读:
    浅谈prufer编码
    数据结构训练之三
    博弈论训练之一
    动态规划训练之十三
    杂题训练之七
    奇技淫巧训练之八
    浅谈博弈论
    浅谈卡特兰数
    奇技淫巧训练之七
    浅谈概率期望的一些例题
  • 原文地址:https://www.cnblogs.com/yaoyaojcy/p/9206922.html
Copyright © 2020-2023  润新知