码迷,mamicode.com
首页 > 系统相关 > 详细

Linux中的变量及IO管道使用

时间:2018-12-30 17:20:25      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:图片   数字   标准输入   空间   eof   调用   .com   顺序   shel   

  • 变量
  • io重定向
  • 管道pipe

    • var-变量
      数学的方程式:设x=2,求y=x^2+2x+1 ?,x和y我们称为未知数,在shell脚本中称为变量,变量用来存储数据,指向内存空间的某个地址,当脚本中重复执行一长串相同代码时,可以使用变量替换,简化代码量,方便开发。

      • 变量赋值
        var_name=value
      • 变量名命名规则:
        1.变量名只能包含数字、字母和下划线,而且不能以数字开头;
        2.变量名最好见名知义,命名机制遵循某种法则;不能够使用程序的保留字,例如if, else, for, while等等,不同版本稍有区别;
      • bash shell系统中的变量无需声明可以直接调用
      • 变量引用:$var_name /${var_name}
      • 变量类型:

        本地变量:作用域仅为当前shell进程;
        环境变量:作用域为当前shell进程及其子进程;
        局部变量:作用域仅为某代码片断(函数上下文);
        位置参数变量:当执行脚本的shell进程传递的参数;
        特殊变量:shell内置的有特殊功用的变量;
                                    $?:判断上一条命令的执行结果
                                    0:表示成功,1~255:表示失败                                   
      • 引号的特殊含义:

        单引号‘‘:强引用,所有字符原样输出,不转义
        双引号"":弱引用;输出引号内所有内容;若内容中有变量、特殊字符转义等会解析结果,然后在输出
        反引号``:用于引用命令结果如同$(..)

        技术分享图片

      • 本地变量:仅在一个shell中有效,子进程不生效
        用法:var_name=value
        查看变量:set | grep var_name
        撤销变量:unset var_name

      • 环境变量:在当前shell的所有子shell中生效
        用法:
        1. export name=value
        2. name=value
          export name
        3. declare -x name=value
        4. name=value
          declare -x name
          技术分享图片
      • 只读变量:只读变量无法重新赋值,并且不支持撤销;存活时间为当前shell进程的生命周期,随shell进程终止而终止;
        用法:
        declare -r var_name=value
        readonly var_name=value
        技术分享图片

      • 查看环境变量命令:export, declare -x, printenv, env,set

      • 但当再重新打开一个终端是,环境变量无效只在当前shell生效,需要定义在全局环境变量配置文件中才会生效。在登录系统时并启动一个shell,一般会加载配置文件中的环境变量。加载的文件跟登录的方式相关。
        bash配置文件分为两类:
        -profile:为交互式登录shell进程提供配置
        全局:对所有用户都生效;
        /etc/profile
        /etc/profile.d/*.sh
        用户个人:仅对当前用户有效;
        ~/.bash_profile
        用途:
        1、用于定义环境变量;
        2、运行命令或脚本;
        -bashrc:为非交互式登录shell进程提供配置
        全局:
        /etc/bashrc
        用户个人:
        ~/.bashrc
        用途:
        1、定义本地变量;
        2、定义命令别名;
        登录与非登录shells:
        登录shells:
        1.任何通过用户登录的shell包括图形界面登录
        2.su -
        非登录shells:
        1.su
        2.图形界面下的终端
        3.脚本
        4.其他bash实例
      • 下面通过在xuetong用户中的四个配置文件中添加echo "/path-dir"来验证加载的文件:/etc/profile,/etc/bashrc,~/.bahs_profile,~/.bashrc;
        技术分享图片
      • 配置文件的读取顺序:
        技术分享图片
        所以如果希望在登录shell和非登录shell都能读到的文件应将变量设置在:~/.bashrc,/etc/bashrc
      • 如何让配置文件中变量生效
        1. 通过命令行重复定义一次;
        2. 让shell进程重读配置文件;
          source /path/conf_file
          . /path/conf_file

    • IO重定向
      IO:input output,程序的数据流有三种:
      输入数据流:默认标准输入为键盘 stdin
      输出数据流:默认标准输出为显示器 stdout
      错误输出流:错误输出也是通过显示器 stderr
      分别使用文件描述:0、1、2
      当我们不希望数据通过标准输入输出时,通过io重定向方法修改:
      输出重定向: >
      特点:会覆盖原有的内容
      输出追加重定向:>>
      特点:在原有的内容后面追加输出
      错误输出流重定向:2> 、2>>
      合并输出流(标准输出、错误输出):
      1.&>,&>>
      2.COMMAND > /path/to/somefile 2>&1
      COMMAND >> /path/to/somefile 2>&1
      输入重定向:<
      多行文本输入:<<
      cat << eof
      cat > /path/to/somefile << eof
      技术分享图片
      有时候执行命令只关心命令有没有执行成功而不关心输出结果,需要用到特殊设备:/dev/null
      技术分享图片
    • 管道pipe
      用于连接程序,实现将前一个命令的输出直接定向后一个程序当作输入数据流
      语法:
      COMMAND1 | COMMAND2 | COMMAND3 | ...
      例如:# tail -n 6 /etc/passwd | tr ‘a-z‘ ‘A-Z‘
      tr命令:把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位转换为SET2出现的字符,或者输出字符
      用法1:
      tr SET1 SET2 < /PATH/FROM/SOMEFILE
      用法2:
      tr -d SET1 < /PATH/FROM/SOMEFILE
      比如取出网卡的IP地址:
      技术分享图片

    Linux中的变量及IO管道使用

    标签:图片   数字   标准输入   空间   eof   调用   .com   顺序   shel   

    原文地址:http://blog.51cto.com/12580678/2337176

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!