首页 > 系统相关 >Linux5:Shell编程——函数、重定向

Linux5:Shell编程——函数、重定向

时间:2024-08-11 10:27:32浏览次数:10  
标签:输出 Shell Linux5 函数 编程 返回值 total 输入 重定向

目录

前言

一、函数

1.函数结构

2.函数实例

3.函数传参

二、重定向

1.输出重定向

2.输入重定向

3.同时使用

4.重定向深入了解

 5.垃圾桶

总结


前言

        Shell编程将会在本章完结

 

一、函数

1.函数结构

#!/bin/sh
# 函数

function fun1()
{
    echo "this is a funtion"
    return 300         # 返回值范围需在0-255 若无返回值 则返回最后一行运行结果 
}

fun1

# $? 用于接收返回值 返回值超过255 对256取模
echo $?     # return 300   输出 44
  • 注意返回值的范围!
  • 返回值范围需在 0-255,若无返回值 则返回最后一行运行结果 
  • 使用函数名即可调用函数
  • #? 用于接收返回值,返回值超过255 对256取模

 

2.函数实例

#!/bin/sh

fun2(){
    read -p "please inter a number : " num1   # 获取用户输入
    read -p "please inter other number : " num2
    total=`expr $num1 + $num2`          # 将两值进行加法计算
    return $total                       # 将结果当做返回值返回
}

fun2                                     # 调用fun2函数
echo "two numbers total is $?"                                

输出

please inter a number : 22
please inter other number : 33
two numbers total is 55
please inter a number : 150
please inter other number : 150
two numbers total is 44   # 300对256取模余44
  • 注意!这里如果输入的值加起来大于255,仍然返回对256取模的值

 

3.函数传参

#!/bin/sh

# 函数传参   
func3(){
    total=`expr $1 + $2 `
    echo $* $@ $#
    return $total    # 这里的total数值也必须在0-255 不然接收到的返回值就是对256取模之后的结果
}
func3 140 160        # 直接在调用函数时传入参数
echo function return $?

输出:$*  $@ 打印每个字符串,$#打印字符串总数

140 160 140 160 2
function return 44

 

二、重定向

  • 需要注意的是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输(STDERR)。

1.输出重定向

  • 将输出的内容存入一个地方,有点像导入
  • 如果导入的地方有内容将会被重定向覆盖
  • 可以使用>>进行追加
command > file

举例

  • 创建一个空文件
  • 进行重定向
  • 进行追加

 

2.输入重定向

  • 和输出重定向相反
  • 从某个地方获取内容作为命令的输入
command < file

举例:

  • 使用刚才的b.txt进行输入重定向
  • wc -l 统计文件的行数
  • 手动输入和重定向输入的区别

 

3.同时使用

  • 同时替换输入和输出,执行command1,从文件infile读取内容,然后将输出写入到outfile中
command < infile > outfile

 

4.重定向深入了解

  • 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:
    • 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
    • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
    • 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
  • 如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:
    • command >file 2>&1

 

 5.垃圾桶

  • 这里所说的垃圾桶是一个文件,路径为 /dev/null
  • 这是一个黑洞,只能输入,不能输出
  • 所以可以将一些不需要观察输出结果的运行文件重定向到这里

 

总结

        完结撒花!!!

标签:输出,Shell,Linux5,函数,编程,返回值,total,输入,重定向
From: https://blog.csdn.net/weixin_65047977/article/details/140937863

相关文章

  • 第十章 面向对象编程
    10.1基本概念类:具有相同方法和属性的一类事物对象、实例:一个拥有具体属性值和动作的具体个体实例化:从一个类得到一个具体对象的过程10.2oop面向对象的程序开发#1.类的命名"""类的命名:推荐使用大驼峰命名法,每个单词的首字母都要大写mycar=>MyCar"""#2.......
  • Go 网络编程(一),建立连接
    net库常用类型和函数1.常用函数ListenListen(network,laddrstring)(Listener,error)创建一个用于接受连接的监听器。DialDial(network,addrstring)(Conn,error)创建一个连接到指定地址的连接。ListenTCPListenTCP(network,laddr*TCPAddr)(TCPListener,error)......
  • Redis之golang编程实战
    Redis介绍官网:Redis-TheReal-timeDataPlatformRedis可作为数据库、缓存、流引擎和消息代理的开源内存数据存储。被用在不计其数的应用中。Redis连续5年被评为最受欢迎的数据库,是开发人员、架构师和开源贡献者参与社区的中心。Redis是一个开源(BSD许可)的内存数据......
  • C编程题
    C语言利用基础知识实现编程题计算器3种写法C语言编程题数组C语言编程题字符串C语言编程题字符串比较的4种方法C语言编程题字符串连接3种方法C语言编程题字符串反转5种方法C语言编程题查找子字符串5种方法C语言编程题函数C语言编程题指针C语言编程题计算数组的平均值6种方......
  • Java中的异步编程模型与事件处理框架:从CompletableFuture到Reactive Streams
    Java中的异步编程模型与事件处理框架:从CompletableFuture到ReactiveStreams大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代软件开发中,异步编程和事件驱动架构变得越来越重要。它们能有效提高应用程序的性能和响应速度,特别是在处理高并发和I......
  • C--面向对象编程入门指南-全-
    C#面向对象编程入门指南(全)原文:BeginningC#object-orientedprogramming协议:CCBY-NC-SA4.0零、简介作为一名.NET培训师和首席程序员,我的经验是,大多数人在掌握C#语言的语法方面没有问题。困扰和挫败许多人的是面向对象编程方法和设计的更高层次的概念。更糟糕的是,大......
  • C--编程零基础入门指南-全-
    C#编程零基础入门指南(全)原文:C#ProgrammingforAbsoluteBeginners协议:CCBY-NC-SA4.0一、做好准备亲爱的读者,欢迎您开始学习编程之旅!电脑、平板电脑、手机和许多其他电子设备都是可编程的,会完全按照人类程序员告诉他们的去做。编程是一个完全基于逻辑的世界。在这方面,......
  • linux系统网络编程
     网络核心概念网络:通过有线或无线的链路连接多个计算机设备进行数据通信或设备控制介质:双绞线,同轴电缆,光纤无线:WIFL,移动网络,蓝牙,红外,NFC设备:计算机,交换机,路由器,IOT在网络编程中,应用层协议编程是非常关键的一部分,因为它直接涉及到了如何在不同的应用程序之间交换数据......
  • 网络编程基础
    目录学习内容:1. 网络体系结构及OSI开放系统系统互联模型1.1 网络体系结构概念 1.2 OSI开放系统互联模型1.3 TCP/IP协议族(簇)的体系结构1.4 TCP/IP四层结构中常见的协议 2. TCP和UDP异同(笔试面试)3.网络编程基础相关的概念3.1 字节序2>验证主机大小端的方......
  • C#多线程并发编程深度探索:解锁async、await、Task与lock等关键字的奥秘
    一、多线程介绍1.什么是多线程多线程是指在一个应用程序中同时执行多个线程的能力。每个线程都是独立运行的,拥有自己的执行路径和资源。多线程编程能够充分利用多核处理器的计算能力,提高应用程序的性能和响应性,特别是在处理耗时任务和并行计算时效果显著。在C#中,线程是程序......