`
tcspecial
  • 浏览: 911820 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

shell 循环变量作用范围

    博客分类:
  • OS
阅读更多
#!/bin/sh

test()
{
	RetVal=0

	cat 1.log | while read line
	do
		if[ "$line" == "2" ]
		then
			RetVal=1
		fi
	done
	
	return $RetVal
}

 

很容易写出上述代码,上述代码返回值始终为0。虽然执行了RetVal=1这条语句,但是一出while循环,变量值又变成0了。

这是因为管道是在子shell中执行的,子shell中的变量对于子shell之外的代码块来说, 是不可见的. 当然, 父进程也不能访问

这些变量, 父进程指的是产生这个子shell的shell. 事实上, 这些变量都是局部变量。

 

#正确做法
test()
{
	RetVal=0

	while read line
	do
		if[ "$line" == "2" ]
		then
			RetVal=1
		fi
	done < 1.log
	
	return $RetVal
}

 

分享到:
评论

相关推荐

    浅谈shell循环中变量的作用域问题

    最近实现了一个shell脚本,功能简单来说就是从文件中按行读取然后将...按照常理shell中的变量默认是全局变量,不会存在变量作用域的问题,于是上网查了下,发现问题出在while上 while循环读取文件中内容有两种写法,一

    shell特殊变量

    Shell特殊变量在Linux和Unix系统中的使用是shell脚本编程中的关键组成部分,它们提供了一种方式来访问和处理脚本运行时的环境信息。这些变量不是由用户直接赋值的,而是由shell自动创建和维护的,具有特殊的含义和...

    shell变量与创建子shell详解

    理解如何在脚本中执行程序以及如何导出Shell变量,可以更好地控制Shell脚本的行为,以及子Shell与父Shell之间变量的隔离与共享。这些知识不仅有助于编写更有效的Shell脚本,还能帮助在管理Linux系统时做出更明智的...

    shell编程.doc(变量 用户定义变量,环境变量,位置变量(shell 参数) )

    Shell变量是编程的核心部分,包括用户定义变量、环境变量和位置变量(shell参数)。用户定义变量由`$`符号后跟变量名来引用,例如`myvar=value`。环境变量是可供子进程使用的全局变量,如`HOME`表示用户的主目录,`...

    bash 循环中变量作用范围的问题分析

    本文将详细探讨Bash循环中变量作用范围的问题,以及如何正确地管理这些变量。 首先,让我们分析一下提供的错误代码示例: ```bash #!/bin/bash for x in `ls */.*/.*` do cat $x | ( while read line do c=$...

    ksh 基础知识 shell简介 变量数组 控制结构 函数 调试

    本地变量仅在当前Shell会话中有效,一旦Shell退出或启动新进程,它们就会消失。定义变量使用等号(`=`),如`filename="test.txt"`,显示变量值则使用 `$` 符号,如`echo $filename`。清除变量使用`unset`命令,如`...

    linux实验六 shell变量

    ### Linux实验六 Shell变量知识点详解 #### 一、实验目的 1. **熟悉Shell变量**: - Shell变量是Shell编程中的基本概念之一,用于存储数据。这些数据可以是文件名、数字或文本字符串。 - 变量分为两种类型:用户...

    shell编程基础之变量

    在Shell脚本中,变量起着至关重要的作用,因为它们是存储数据的基础。本篇文章将深入探讨Shell编程中的变量,包括其定义、类型、赋值、使用规则以及一些常见操作。 1. **变量定义**: 在Shell中,无需预先声明变量...

    052903shell循环 read case1

    `for`循环通常用于已知循环次数或者遍历特定范围的情况。例如,文件中的`for`循环用来遍历列表,如计算1到100的所有整数之和,或者显示每一位用户的默认shell。`for`循环的语法是: ```bash for 变量 in 列表; do ...

    Shell中的for循环总结

    在Shell脚本编程中,for循环是常用的控制流语句之一,用于重复执行一段代码,直到满足特定条件为止。以下是对Shell中for循环的详细总结: 1. **基础for循环语法**: ```bash for 变量 in 值列表 do # 循环体 ...

    shell变量及控制结构1

    shell变量及控制结构1 在 Linux 中,shell 变量是非常重要的概念,它们可以存储和表示不同的值,从而影响着 shell 脚本的执行。在本节中,我们将讨论 shell 变量的使用方法和控制结构的应用。 1. 变量的使用 在 ...

    shell for循环、循环变量值付给其他shell脚本的方法

    本文将详细介绍如何在Shell中使用for循环,并探讨如何将循环变量的值传递给其他Shell脚本。 首先,让我们看下Shell中for循环的三种常见形式: 1. C语言风格的for循环: ```bash for ((i=1; i; i++)) do echo $i ...

    LINUX开发基础 系统使用 全屏编辑器VI SHELL 常用变量

    这一节包含了Shell程序的编写和执行、Shell变量(包括参数变量和内部变量)、测试命令、条件语句、循环语句以及函数的使用。通过Shell编程,用户可以定制自己的工作环境,提高工作效率。 学习Linux开发基础,不仅...

    shell变量与常用符号2(视频)

    3. 局部变量:在函数内部定义的变量,只在该函数的作用域内有效。 4. 预定义变量:Shell预先定义的一些变量,如`$#`表示参数个数,`$0`表示脚本名。 二、变量操作 1. 赋值:使用等号`=`进行赋值,如`var=value`。 2...

    linux shell循环:for、while、until用法详解

    在Linux Shell编程中,循环是不可或缺的一部分,它允许我们重复执行一段代码,直到特定条件不再满足。本篇文章将深入探讨三种常见的循环结构:for、while和until。 **1. for循环** for循环常用于已知循环次数的...

    5.1: Shell概述 、 编写及执行脚本 、 Shell变量 、 数值运算 、 总结和答疑.docx

    * 使用变量来实现循环操作 5. 案例 5:Shell 中的数值运算 在 Shell 中,可以使用数值运算来实现数学运算,例如: `a=10` `b=20` `c=$a+$b` `echo $c` 可以使用 `$(( ))` 语法来实现数值运算。 Shell 是一个...

    第二十三章:shell循环之for、while、case.pdf

    Shell 循环控制结构 Shell 中的循环控制结构主要有三种:for 循环、while 循环和 case 循环。这些循环结构都是控制流程的重要组成部分,能够让用户根据不同的条件执行不同的命令。 一、for 循环 for 循环是一种...

    第二十三章:shell循环之for、while、case1

    本文将详细讲解三种主要的Shell循环:for、while和case。 一、for循环 for循环适用于处理有固定或者无规律的取值序列。其基本语法结构如下: ```bash for 变量名 in 变量取值列表 do 重复执行的命令(循环体) ...

Global site tag (gtag.js) - Google Analytics