zoukankan      html  css  js  c++  java
  • 自学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:

  • 相关阅读:
    HDU 1495 非常可乐
    ja
    Codeforces Good Bye 2016 E. New Year and Old Subsequence
    The 2019 Asia Nanchang First Round Online Programming Contest
    Educational Codeforces Round 72 (Rated for Div. 2)
    Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises)
    AtCoder Regular Contest 102
    AtCoder Regular Contest 103
    POJ1741 Tree(点分治)
    洛谷P2634 [国家集训队]聪聪可可(点分治)
  • 原文地址:https://www.cnblogs.com/yaoyaojcy/p/9206922.html
Copyright © 2011-2022 走看看