bash shell循环的疑问

问题描述

下面两段代码第一段,无法正确统计文件行数,count在循环中的计算,出了循环就无效了第二段,count2出了循环依然有效初学shell,不太明白这是为什么,希望大家指点一下ps:第一段代码应该如何修改,才能达到第二段的效果#!/bin/bashcount=0cat "$1" | while read linedo count=$[ $count + 1 ]doneecho "$count line(s) in all."#-----------------------------------------count2=0;for var in a b cdo count2=$[ $count2 + 1 ]doneecho "$count2 line(s) in all."

解决方案

shell 在管道中改变变量是无效的 有很多方法可以做到 比如wc 当然你如果硬要用while改成这样1.#!/bin/bash 2.count=0 3. 4.while read line 5.do 6. count=$[ $count + 1 ] 7.done < file8. 9.echo "$count line(s) in all." 具体可以查看:http://sumit.blog.51cto.com/162317/271554http://bbs.chinaunix.net/thread-1661629-1-1.htmlhttp://zhidao.baidu.com/link?url=mXrgoibdctnZBoEgdFPt49sa4yTgtaQuexvZS28ZH293W3nww5wIoF7Nj3M9g3fr8OxiiyHCBljAfiwWH1v6kahttp://linux.sheup.com/linux/linux5525.htmhttp://www.linuxidc.com/Linux/2011-04/34889.htmhttp://blog.csdn.net/astraylinux/article/details/7280906http://xuyongtao630.blog.163.com/blog/static/8618328320115276915626/

时间: 2024-08-31 21:32:28

bash shell循环的疑问的相关文章

使用Python脚本在Linux下实现部分Bash Shell的教程_python

对于Linux用户来说,命令行的名声相当的高.不像其他操作系统,命令行是一个可怕的命题,但是对于Linux社区中那些经验丰富的大牛,命令行却是最值得推荐鼓励使用的.通常,命令行对比图形用户界面,更能提供更优雅和更高效的解决方案. 命令行伴随着Linux社区的成长,UNIX shells,例如 bash和zsh,已经成长为一个强大的工具,也是UNIX shell的重要组成部分.使用bash和其他类似的shells,可以得到一些很有用的功能,例如,管道,文件名通配符和从文件中读取命令,也就是脚本.

使用Bash Shell获取文件名和目录名的简单方法_linux shell

前言还是今天再写一个自动化打包脚本,用到了从路径名中获取最后的文件名.这里记录一下实现过程.当然,最后我也会给出官方的做法.(ps:很囧,实现完了才发现原来Bash Shell有现成的函数) 获取文件名假设给定的路径名为: /tmp/csdn/zhengyi/test/zhengyi.txt awk解法用"/"做分隔符,然后打印出最后的那一部分.实现代码如下: resFile=`echo /tmp/csdn/zhengyi/test/adb.log | awk -F "/&q

Linux系统中bash shell编程的10个基础问题讲解_linux shell

第1问:为何叫做shell?在介绍 shell 是什么东西之前,不妨让我们重新审视使用者与电脑的关系.我们知道电脑的运作不能离开硬件,但使用者却无法直接对硬件作驱动,硬件的驱动只能透过一个称为"操作系统(Operating System)"的软件来控管,事实上,我们每天所谈的linux,严格来说只是一个操作系统,我们称之为"核心(kernel)".然而,从使用者的角度来说,使用者也没办法直接操作kernel,而是透过kernel的"外壳"程序,也

linux中Bash shell学习笔记

BASH 的基本语法 •最简单的例子 -- Hello World www.111cn.net ! •关于输入.输出和错误输出 •BASH 中对变量的规定(与 C 语言的异同) •BASH 中的基本流程控制语法 •函数的使用 2.1     最简单的例子 -- Hello World! 几乎所有的讲解编程的书给读者的第一个例子都是 Hello World 程序,那么我们今天也就从这个例子出发,来逐步了解 BASH. 用 vi 编辑器编辑一个 hello 文件如下: #!/bin/bash # T

[20151010]bash for循环.txt

[20151010]bash for循环.txt --同事要写一个shell要使用for循环.遇到一些问题做一些记录. --我一般会使用seq命令生成序列.我记得以前写过脚本: http://blog.itpub.net/267265/viewspace-758573/ --例子: #! /bin/bash for i in $(seq 10) do echo $i done #! /bin/bash for  i in `seq 10` do         echo $i done --类似

Bash Shell的参数符号意义

Bash Shell 中会用到一些参数, $1,$2,... 特定第几个参数, $0 表示当前执行的进程名,script 本身的名字,或者在正则表达式中表示整行输出 $# 命令行或者是位置参数的个数 $* 所有的位置参数,被作为一个单词. $@ 与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递 $- 传递给脚本的falg $!   在后台运行的最后的工作的PID(进程ID). $_   保存之前执行的命令的最后一个参数. $?   函数或者脚本本身的退出状

编写Bash Shell通过gnuplot绘制系统性能数据图的方法

  这篇文章主要介绍了编写Bash Shell通过gnuplot绘制系统性能数据图的方法,做到可视化数据收集,需要的朋友可以参考下 使用步骤: 1.设置一个定时任何 执行getperf.sh,采集性能数据 2.将采集到性能数据文件,如:192.168.1.1.tar.gz 解压 3.将性能分析的脚步performance_analyse.sh 放到解压后的目录中 4.安装gnuplot程序(这里下载) 5.将字体文件夹,拷贝到/usr/share/fonts/目录 6.直接运行 bash per

一波实用的Bash Shell整理

  这篇文章主要介绍了一波实用的Bash Shell整理,适用于Ubuntu等Debian系的Linux系统,需要的朋友可以参考下 作为一个命令行探索者,你或许发现你自己一遍又一遍重复同样的命令.如果你总是用ssh进入到同一台电脑,如果你总是将一连串命令连接起来,如果你总是用同样的参数运行一个程序,你也许希望在这种不断的重复中为你的生命节约下几秒钟. 解决方案是使用一个别名(alias).正如你可能知道的,别名用一种让你的shell记住一个特定的命令并且给它一个新的名字的方式.不管怎么样,别名有

Linux bash Shell中的变量类型详解

  这篇文章主要介绍了Linux bash Shell中的变量类型详解,变量类型共分为本地变量.局部变量.环境变量.位置变量和特殊变量等,需要的朋友可以参考下 在Linux系统中进行日常运维或者是编写脚本时,变量是再熟悉不过的了,但这些变量都有哪些类型,具体的用法又有哪些差异呢?本文整理分享给大家: 一.bash变量类型: 本地变量 局部变量 环境变量 位置变量 特殊变量(内置) 二.本地变量: varname=value:作用域为整个bash进程可以使用; 变量命名规范: 1. 只能含字母.数