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

目录

前言

一、函数

1.函数结构

2.函数实例

3.函数传参

二、重定向

1.输出重定向

2.输入重定向

3.同时使用

4.重定向深入了解

5.垃圾桶

总结


前言

Shell编程将会在本章完结

一、函数

1.函数结构

bash 复制代码
#!/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.函数实例

bash 复制代码
#!/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 $?"                                

输出

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

3.函数传参

bash 复制代码
#!/bin/sh

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

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

bash 复制代码
140 160 140 160 2
function return 44

二、重定向

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

1.输出重定向

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

举例

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

2.输入重定向

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

举例:

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

3.同时使用

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

4.重定向深入了解

  • 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:

    • 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
    • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
    • 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
  • 如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:
    *

    bash 复制代码
    command >file 2>&1

5.垃圾桶

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

总结

完结撒花!!!

相关推荐
天远Date Lab2 分钟前
零信任架构实战:基于天远行驶证核查构建自动化车队准入网关
运维·人工智能·架构·自动化
GGMM78914 分钟前
富士 EP‑3955D 变频器主板维修调试笔记
笔记·变频器·变频器维修
zmzb010322 分钟前
Python课后习题训练记录Day194
python·opencv·计算机视觉
不会就选b25 分钟前
Linux之网络基础(二)
linux·运维·网络
今儿敲了吗27 分钟前
CN——网络层(上)
网络·笔记
benchmark_cc34 分钟前
批量获取量化数据时,如何设置合理的超时和重试机制?——QuantDash 高性能实战指南
开发语言·人工智能·python·pandas·量化·quantdash
2601_9669496535 分钟前
使用 Pandas 读取批量数据时如何避免内存溢出?QuantDash 量化数据工程师避坑指南
开发语言·python·pandas·tushare·akshare·quantdash
65岁退休Coder43 分钟前
LangChain v1.3.4 笔记 - 08 MCP & 相关概念
后端·python·langchain
莫浅子1 小时前
Day 4:USB 2.0 时序与带宽预算
linux·运维·网络
wdloumiga1 小时前
使用 Construct 3零基础做一些2D小游戏
python·游戏·游戏2d