Bash shell,while 循环中的变量无法保存问题

  • 今天遇到一个很奇怪的问题,shell脚本中明明是同一个变量,但是在不同的地方打印竟然会有不同的内容,后来发现是while循环中赋值的全局变量,在while循环外获取不到。

  • 如下是例子:

    [liuhao@slave04 ~]$ cat test.sh 
    #! /bin/sh
    
    x=1
    echo "adasd" | while read line
    do
        x=2 
    done
    echo $x
    
    
  • 运行结果

    [liuhao@slave04 ~]$ sh test.sh 
    1
    ``
    
    
  • 原因

    原来是因为管道|创建了新的子进程,而子进程是在独立的进程空间(Context)运行了. 需要跟父进程通信的话, 得使用进程间通信机制. 不是简单的变量问题。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,683评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 6,296评论 0 10
  • Linux习惯问题: 在vim编辑时,按了ctrl + s后,再按ctrl + q就可以继续执行了。ctrl + ...
    光着脚的鞋阅读 4,674评论 0 16
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,455评论 3 53
  • 第 2 章 SHELL 基础知识2.1 shell脚本我们在上面简单介绍了一下什么是shell脚本,现在我们来进一...
    LiWei_9e4b阅读 1,639评论 0 0

友情链接更多精彩内容