zoukankan      html  css  js  c++  java
  • 【Linux】基本知识1

    Original from: http://www.zsythink.net/archives/279

    root@agu:~/nmonData# xyz="this is atest"

    root@agu:~/nmonData# ./test.sh

    这是在子shell中执行test.sh,所以在父shell中定义的变量没有办法在子shell中执行,也就是test.sh中不能使用父shell中定义的变量zyz;如果想要test.sh脚本可以使用到当前bash中定义的变量,有两种方式

    1) 使用另一种不是本地变量的"变量",它被称作"环境变量",我们可以在当前bash中定义环境变量

    2) 在当前bash中,仍然使用"本地变量";,但是改变执行test.sh脚本的方式。

    环境变量
    使用export关键字指明对应的变量为环境变量,方法如下: export varname=value环境变量的作用域:环境变量的生效范围为当前shell进程及其子进程, 

    也可以先声明为本地变量,然后再导出为环境变量,步骤如下: 

    zsythink="www.zsythink.net"

    export zsythink

    1) 命令行中直接执行的shell脚本在执行时会启动一个子shell进程

    2) 命令行中直接执行的shell脚本会继承当前shell的环境变量

    3)系统自动执行的shell脚本(非命令行中执行)就需要自我定义需要的各种环境变量,或者导入一些已经存在的环境变量。

    在原有bash shell环境中执行一个脚本

    在当前bash中,除了使用"路径+名称脚本"的方式直接运行脚本以外,还能使用另一种方法运行脚本,就是使用source关键字,我们只要在原有的方法前面加入source关键字即可

      root@agu:~/nmonData# source ./test.sh

    本地变量只能在当前shell进程中生效,而当我们在执行脚本的时候如果加入了source关键字,那么脚本就相当于在当前进程中执行,而不是在子进程中执行,那么,如果使用source的方式执行脚本,理论上来说,本地变量是可以被脚本使用的,因为它们都在一个进程中。注意 也可以如下执行

    root@agu:~/nmonData# . /test.sh

    ". /some/file"用文字描述就是"点 空格 脚本路径",其实 source /some/file 可以理解为将/some/file文件中的内容包含到当前文件或者进程中, "." 的作用和source的作用相同。

    特殊变量:$?, 保存了上一个命令的执行状态返回值。命令执行后,可能有两类状态返回值(0 - 255), >如果返回值为0:表示上一条命令正确执行, 如果返回值为1-255中的任意一个:表示上一条命令执行错误. 1到255中,1、2、127 为系统预留的错误状态码,其他状态码可自定义。

    位置变量:  

      $# 表示传入脚本的参数个数,参数数量

      $*参数列表 同 $@

      $@参数列表,获取到所有参数

      ${@:起点} 表示由起点开始(包括起点),取得后面的所有的位置参数

      ${@:起点:个数} 表示由起点开始(包括起点),取得指定个数的位置参数

      

    当我们直接使用$*和$@的时候,这两种写法没有任何区别. 但是,在对$* 和$@加引号后,变成了"$*"和"$@", 这两种写法就会产生区别

    $@ $* 只在被双引号包起来的时候才会有差异. "$*": 传递给脚本的所有参数,全部参数合为一个字符串,"$@": 传递给脚本的所有参数,每个参数为独立字符串

    $0表示脚本本身,相当于basename输出的内容

    如下特殊变量用来在脚本内引用传入脚本的参数值:

    $1 , $2 ……

  • 相关阅读:
    jvm调优
    Spring 事务
    Spring Framework入门介绍
    redis入门介绍
    Spring与SpringMVC重复扫描问题
    跨域相关问题
    Spring MVC介绍
    Servlet、Servlet容器
    获取屏幕宽高
    mybatis中比较符的写法
  • 原文地址:https://www.cnblogs.com/alicegu2009/p/9229135.html
Copyright © 2011-2022 走看看