#!/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中的变量默认是全局变量,不会存在变量作用域的问题,于是上网查了下,发现问题出在while上 while循环读取文件中内容有两种写法,一
Shell特殊变量在Linux和Unix系统中的使用是shell脚本编程中的关键组成部分,它们提供了一种方式来访问和处理脚本运行时的环境信息。这些变量不是由用户直接赋值的,而是由shell自动创建和维护的,具有特殊的含义和...
理解如何在脚本中执行程序以及如何导出Shell变量,可以更好地控制Shell脚本的行为,以及子Shell与父Shell之间变量的隔离与共享。这些知识不仅有助于编写更有效的Shell脚本,还能帮助在管理Linux系统时做出更明智的...
Shell变量是编程的核心部分,包括用户定义变量、环境变量和位置变量(shell参数)。用户定义变量由`$`符号后跟变量名来引用,例如`myvar=value`。环境变量是可供子进程使用的全局变量,如`HOME`表示用户的主目录,`...
本文将详细探讨Bash循环中变量作用范围的问题,以及如何正确地管理这些变量。 首先,让我们分析一下提供的错误代码示例: ```bash #!/bin/bash for x in `ls */.*/.*` do cat $x | ( while read line do c=$...
本地变量仅在当前Shell会话中有效,一旦Shell退出或启动新进程,它们就会消失。定义变量使用等号(`=`),如`filename="test.txt"`,显示变量值则使用 `$` 符号,如`echo $filename`。清除变量使用`unset`命令,如`...
### Linux实验六 Shell变量知识点详解 #### 一、实验目的 1. **熟悉Shell变量**: - Shell变量是Shell编程中的基本概念之一,用于存储数据。这些数据可以是文件名、数字或文本字符串。 - 变量分为两种类型:用户...
在Shell脚本中,变量起着至关重要的作用,因为它们是存储数据的基础。本篇文章将深入探讨Shell编程中的变量,包括其定义、类型、赋值、使用规则以及一些常见操作。 1. **变量定义**: 在Shell中,无需预先声明变量...
`for`循环通常用于已知循环次数或者遍历特定范围的情况。例如,文件中的`for`循环用来遍历列表,如计算1到100的所有整数之和,或者显示每一位用户的默认shell。`for`循环的语法是: ```bash for 变量 in 列表; do ...
在Shell脚本编程中,for循环是常用的控制流语句之一,用于重复执行一段代码,直到满足特定条件为止。以下是对Shell中for循环的详细总结: 1. **基础for循环语法**: ```bash for 变量 in 值列表 do # 循环体 ...
shell变量及控制结构1 在 Linux 中,shell 变量是非常重要的概念,它们可以存储和表示不同的值,从而影响着 shell 脚本的执行。在本节中,我们将讨论 shell 变量的使用方法和控制结构的应用。 1. 变量的使用 在 ...
本文将详细介绍如何在Shell中使用for循环,并探讨如何将循环变量的值传递给其他Shell脚本。 首先,让我们看下Shell中for循环的三种常见形式: 1. C语言风格的for循环: ```bash for ((i=1; i; i++)) do echo $i ...
这一节包含了Shell程序的编写和执行、Shell变量(包括参数变量和内部变量)、测试命令、条件语句、循环语句以及函数的使用。通过Shell编程,用户可以定制自己的工作环境,提高工作效率。 学习Linux开发基础,不仅...
3. 局部变量:在函数内部定义的变量,只在该函数的作用域内有效。 4. 预定义变量:Shell预先定义的一些变量,如`$#`表示参数个数,`$0`表示脚本名。 二、变量操作 1. 赋值:使用等号`=`进行赋值,如`var=value`。 2...
在Linux Shell编程中,循环是不可或缺的一部分,它允许我们重复执行一段代码,直到特定条件不再满足。本篇文章将深入探讨三种常见的循环结构:for、while和until。 **1. for循环** for循环常用于已知循环次数的...
* 使用变量来实现循环操作 5. 案例 5:Shell 中的数值运算 在 Shell 中,可以使用数值运算来实现数学运算,例如: `a=10` `b=20` `c=$a+$b` `echo $c` 可以使用 `$(( ))` 语法来实现数值运算。 Shell 是一个...
Shell 循环控制结构 Shell 中的循环控制结构主要有三种:for 循环、while 循环和 case 循环。这些循环结构都是控制流程的重要组成部分,能够让用户根据不同的条件执行不同的命令。 一、for 循环 for 循环是一种...
本文将详细讲解三种主要的Shell循环:for、while和case。 一、for循环 for循环适用于处理有固定或者无规律的取值序列。其基本语法结构如下: ```bash for 变量名 in 变量取值列表 do 重复执行的命令(循环体) ...