Shell练习2

流程控制

一、select in循环

select variable in value_list
do
	statements
done

取值列表value_list中内容会以菜单的形式显示出来
注意select是无限循环,输入空值不会结束循环,只有遇到break语句,或者Ctrl + D才能结束循环

二、Shell函数

  1. 函数定义

    function name(){
    	statements
    	[return value]
    }
    # [return value] 可写可不写
    
  2. 函数调用

    • 不传参:name
    • 传参:name param1 param2 param3

    注意Shell 不限制定义和调用的顺序

    • 例子:

      function getSum(){
              local sum=0
              for n in $@;do
              # $@表示所有参数
                      ((sum+=n))
              done
              return $sum
      }
      getSum 10 20 30 40
      echo "返回值:$?"
      # $? 表示函数的退出状态(返回值)
      

    在这里插入图片描述

    • 在函数内部可以使用$n 来表示参数次序,比如$1 表示第一个参数,$2 表示第二个参数
    • 除了$n ,还有另外三个比较重要的变量:
      1. $# 获取传递参数的个数
      2. $@或者$* 可以一次性获取所有的参数
      3. 可以使用$@ 直接遍历函数参数

输出重定向

  1. 标准输出重定向

    • command > file :以覆盖的方式,将command的正确结果输出到file文件
    • command >> file:以追加的方式,将command的正确结果输出到file文件
  2. 标准错误输出重定向

    • command 2> file :以覆盖的方式,将command的错误信息输出到file文件
    • command 2>> file:以追加的方式,将command的错误信息输出到file文件
  3. 正确输出和错误信息同时保存

    • command >file 2>&1:以覆盖的方式,将错误信息和正确输出同时保存在file中
    • command >>file 2>&1:以追加的方式,将错误信息和正确输出同时保存在file中
    • command >file 2>file2:以覆盖的方式,将正确的输出结果输出到file中,错误的信息输出到file2中
    • command >>file 2>>file2:以追加的方式,将正确的输出结果输出到file中,错误的信息输出到file2中

    -注意,在输出重定向中,>表示是覆盖,>>表示追加
    -输出重定向的完整写法为fd>file或者fd>>file,其中fd为文件描述符,如果不写则默认为1,也就是标准输出文件。fd和>之间不能有空格,>和file之间可以有空格

输入重定向

  • command < file:将file文件中的内容作为command的输入

  • command << END:从标准输入(键盘)读取数据,知道遇到分界符END才停止(分界符可以为任意的字符串,用户自己定义)

  • command <file >file2:将file作为command的标准输入,并将command的处理结果输出到file2中

  • 例子:统计文档中有多少行文字
    wc命令可以用来对文本进行统计,包括单词个数、行数和字节数等,用法如下:
    wc [选项] [文件名]
    其中,-c 为统计字节数,-w统计单词数,-l统计行数
    则:wc -l <file

  • 例子2:逐行读取文件内容

    1. 使用while循环
    while read row;do
    	echo $row
    done <file.txt
    
    1. 使用管道符和while循环
    	cat file.txt | while read row;do
    		echo $row
    	done 
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值