shell 循环变量传递问题

shell 循环变量传递问题如例子中:#!/bin/bashfile=”/etc/passwd”letnum=0cat$file|whilereadlinedoecho-e”hello,`echo$line|cut-d”:”-f1`\c”echoyourUIDis`echo$line|cut-d”:”-f3`nu

大家好,又见面了,我是你们的朋友全栈君。

如例子中:

#!/bin/bash

file="/etc/passwd"
let num=0
cat $file | while read line
do
        echo -e "hello,`echo $line|cut -d ":" -f 1` \c"
        echo your UID is `echo $line|cut -d ":" -f 3`
        num=$[$num+1]
        echo $num
done
echo number is $num

执行结果如下(后面一部分)

hello,hplip your UID is 113
32
hello,saned your UID is 114
33
hello,lsn your UID is 1000
34
hello,sshd your UID is 115
35
number is 0


为什么变量num没有被传递?

定义为环境变量没有用的,环境变量只是在子进程创建的时候可以从父进程复制到子进程,它无法实现从子进程往父进程传递,也不能在子进程运行期间从父进程获得新值。

解决办法是不要产生子进程


如下:

#!/bin/bash

file="/etc/passwd"
let num=0
while read line
do
        echo -e "hello,`echo $line|cut -d ":" -f 1` \c"
        echo your UID is `echo $line|cut -d ":" -f 3`
        num=$[$num+1]
        echo $num
done < $file
echo number is $num

执行结果:

hello,speech-dispatcher your UID is 112
31
hello,hplip your UID is 113
32
hello,saned your UID is 114
33
hello,lsn your UID is 1000
34
hello,sshd your UID is 115
35
number is 35

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163980.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • HashMap底层实现原理_计算机底层原理

    HashMap底层实现原理_计算机底层原理文章目录前言一、快速入门二、使用步骤1.引入库2.读入数据总结学习内容:学习时间:学习产出:前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:以下是本篇文章对HashMap的实现原理内容,下面案例可供参考提示:以下是本篇文章正文内容,下面案例可供参考一、快速入门示例:有一定基础的小伙伴们可以选择性的跳过该步骤HashMap是Java程序员使用频率最高的用于映射键值对(key和value)处理的数据类型。随着JDK版本的跟新,JDK1.8对HashMap底层的实现进行

    2025年10月19日
    3
  • JS数组定义及详解

    JS数组定义及详解JS数组定义及详解一、总结一句话总结:在js中,文本下标的数组元素,不计入数组长度,以文本下标形式添加到数组,实际是以属性形式添加到数组对象中的。二、JS数组定义及详解1、什么是数组数组就是

    2022年6月30日
    23
  • 一:计算机基础入门及介绍[通俗易懂]

    一:计算机基础入门及介绍[通俗易懂]一:计算机基础入门篇1.计算机系统计算机(Conputer):俗称电脑,一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速的处理,然后把处理结果输出的现代化智能电子设备。…

    2022年10月21日
    3
  • ffmpeg安装教程win10_windows10我的电脑在哪

    ffmpeg安装教程win10_windows10我的电脑在哪FFmpeg命令行安装使用如下命令进行FFmpeg:sudoapt-getinstallffmpegFFmpeg源码安装FFmpeg源码获取使用如下命令获取ffmpeg的源码:gitclonehttps://git.ffmpeg.org/ffmpeg.gitffmpegffmpeg编译使用如下命令指定安装目录:./configure–prefix=/usr/local/ffmpeg–enable-debug=3–enable-shared–disa

    2025年11月7日
    1
  • 通过Xshell如何从Linux服务器下载文件(亲测可行)

    通过Xshell如何从Linux服务器下载文件(亲测可行)

    2021年10月14日
    57
  • c# 第14节 字符方法、转义字符、字符串的方法[通俗易懂]

    c# 第14节 字符方法、转义字符、字符串的方法

    2022年3月13日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号