当前位置: 代码迷 >> 综合 >> shell 使用管道符时变量的问题
  详细解决方案

shell 使用管道符时变量的问题

热度:44   发布时间:2023-09-15 07:02:13.0

使用管道符计算文件行数脚本如下:

#!/bin/sh

linenum=0

cat test | while read line

do

    echo "line content: $line"

    ((linenum+=1))

done

echo "line number: $linenum"

输出结果为

line content: 1

line content: 2

line content: 3

line content: 4

line content: 5

line number: 0

使用重定向计算文件函数脚本如下:

#!/bin/sh

linenum=0

while read line

do

    echo "line content: $line"

    ((linenum+=1))

done < test

echo "line number: $linenum"

输出结果为

line content: 1

line content: 2

line content: 3

line content: 4

line content: 5

line number: 5

分析结果:

使用管道符时,会fork出一个子进程,变量在父子进程里无法互通。使用第二种方式,在同一个进程中,所以达到了我们预期的目的。

  相关解决方案