【玩转Linux操作】详细讲解Shell的函数,exit,文件重定向,引入外部脚本的操作

这篇具有很好参考价值的文章主要介绍了【玩转Linux操作】详细讲解Shell的函数,exit,文件重定向,引入外部脚本的操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🎊专栏【​​​​​​​玩转Linux操作】
🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
🎆音乐分享【Love Story】
🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰


【玩转Linux操作】详细讲解Shell的函数,exit,文件重定向,引入外部脚本的操作,玩转Linux操作,linux,chrome,运维

🍔函数

bash中的函数类似于C/C++中的函数,但是return的返回值与C/C++不同,返回的是exit code,取值为0~255,0表示正常结束

如果想获取函数的输出结果,可以通过echo输出到stdout中,然后通过$(function_name)来获取stdout中的结果
函数的return值可以通过$?来获取

[function] func_name(){ # function关键字可以省略
	语句1
	语句2
	...
}

⭐不获取return值和stdout值

#! /bin/bash
func() {
    name=fufu
    echo "Hello $name"
}

func

【玩转Linux操作】详细讲解Shell的函数,exit,文件重定向,引入外部脚本的操作,玩转Linux操作,linux,chrome,运维

⭐获取return值和stdout值

不写return时,默认return 0

#! /bin/bash
func() {
    name=fufu
    echo "Hello $name"

    return 123
}

output=$(func)
ret=$?		#函数的return值可以通过 $? 来获取

echo "output = $output"
echo "return = $ret"

【玩转Linux操作】详细讲解Shell的函数,exit,文件重定向,引入外部脚本的操作,玩转Linux操作,linux,chrome,运维

🌺函数的输入参数

在函数中,$1表示第一个输入参数,$2表示第二个输入参数,以此类推

函数里面的$0是文件名,而不是函数名

#! /bin/bash
func() {  # 递归计算 $1 + ($1 - 1) + ($1 - 2) + ... + 0
    word=""
    while [ "${word}" != 'y' ] && [ "${word}" != 'n' ]
    do
        read -p "要进入func($1)函数吗?请输入y/n:" word
    done

    if [ "$word" == 'n' ]
    then
        echo 0
        return 0
    fi  

    if [ $1 -le 0 ] 
    then
        echo 0
        return 0
    fi  

    sum=$(func $(expr $1 - 1))
    echo $(expr $sum + $1)
}

echo $(func 10)

【玩转Linux操作】详细讲解Shell的函数,exit,文件重定向,引入外部脚本的操作,玩转Linux操作,linux,chrome,运维

🌺函数的局部变量

可以在函数里面定义局部变量,作用范围仅在当前函数里面
可以在递归函数中定义局部变量

local 变量名=变量值

例如

#! /bin/bash

func() {
    local name=fufu
    echo $name
}
func

echo $name

【玩转Linux操作】详细讲解Shell的函数,exit,文件重定向,引入外部脚本的操作,玩转Linux操作,linux,chrome,运维

🍔exit命令

  • exit命令用来退出当前shell进程,并返回一个退出状态,所以$?可以接收这个退出状态
  • exit命令可以接受一个整数值作为参数,代表退出状态。如果不指定,默认状态值为0
  • exit退出状态

⭐示例

创建脚本abc.sh

#! /bin/bash

if [ $# -ne 1 ]  # 如果传入参数个数等于1,则正常退出;否则非正常退出。
then
    echo "arguments not valid"
    exit 1
else
    echo "arguments valid"
    exit 0
fi

【玩转Linux操作】详细讲解Shell的函数,exit,文件重定向,引入外部脚本的操作,玩转Linux操作,linux,chrome,运维

🍔文件重定向

每个进程默认打开3个文件描述符

  • stdin 标准输入,从命令行读取数据,文件描述符为0
  • stdout标准输出,向命令行输出数据,文件描述符为1
  • stderr标准错误输出,向命令行输出数据,文件描述符为2

可以用文件重定向将这三个文件重定向到其他文件中

重定向命令列表

命令 说明
command > file stdout重定向到file
command < file stdin重定向到file
command >> file stdout以追加方式重定向到file
command n > file 将文件描述符n重定向到file
command n >> file 将文件描述符n以追加方式重定向到file

⭐示例

输入和输出重定向

echo -e "Hello \c" > output.txt  # 将stdout重定向到output.txt中
echo "World" >> output.txt  # 将字符串追加到output.txt中

read str < output.txt  # 从output.txt中读取字符串

echo $str  # 输出结果:Hello World

同时重定向stdin和stdout
创建bash脚本

#! /bin/bash

read a
read b

echo $(expr "$a" + "$b")

创建input.txt,里面的内容为:

3
4

执行命令

【玩转Linux操作】详细讲解Shell的函数,exit,文件重定向,引入外部脚本的操作,玩转Linux操作,linux,chrome,运维

./test.sh < input.txt > output.txt
从input.txt中读取内容,将输出写入output.txt中

🍔引入外部脚本

类似于C/C++的include操作,bash也可以引入其他文件中的代码

. filename  #注意文件和点之间有一个空格

或者

source filename

⭐示例

创建test1.sh,内容为

#! /bin/bash

name=fufu  #定义变量

然后创建test2.sh,内容为

#! /bin/bash

source test1.sh # 或 . test1.sh

echo My name is: $name  # 可以使用test1.sh中的变量

【玩转Linux操作】详细讲解Shell的函数,exit,文件重定向,引入外部脚本的操作,玩转Linux操作,linux,chrome,运维

🥰如果大家有不明白的地方,或者文章有问题,欢迎大家在评论区讨论,指正🥰文章来源地址https://www.toymoban.com/news/detail-528336.html

到了这里,关于【玩转Linux操作】详细讲解Shell的函数,exit,文件重定向,引入外部脚本的操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】shell编程4(break语句、continue、exit、shell的函数、返回值return)

    break语句用于从for、while、until或select循环中退出、停止循环的执行。 语法: n代表嵌套循环的层级,如果指定了n,break将退出n级嵌套循环。 如果没有指定n或n小于 1,则退出状态码为0,否则退出状态码为n。 一句话总结:跳出当前循环 continue语句用于跳过循环体中剩余的命令

    2024年02月04日
    浏览(45)
  • 【玩转Linux操作】一文带你明白Shell的判断,循环语句

    🎊专栏【玩转Linux操作】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 注意写空格 if … then 形式 类似于C/C++里面的 if-else 语句 🎈示例 🎈示例 🎈示例 类似于C/C++的 switch 语句 🎈示例 注意写空

    2024年02月13日
    浏览(40)
  • 【Linux操作系统】Linux系统编程实现递归遍历目录,详细讲解opendir、readdir、closedir、snprintf、strcmp等函数的使用

    在Linux系统编程中,经常需要对目录进行遍历操作,以获取目录中的所有文件和子目录。递归遍历目录是一种常见的方法,可以通过使用C语言来实现。本篇博客将详细介绍如何使用C语言实现递归遍历目录的过程,并提供相应的代码示例,同时解释相关函数的使用。 1.1.1 函数

    2024年02月12日
    浏览(36)
  • 【Linux】Shell脚本之函数的操作+实战详解(建议收藏⭐)

    🍁 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入! 函数是一段可以重复利用有组织的代码;可以减少代码,提高代码利用率,使脚本结构更加清晰。 这样只是写

    2024年02月05日
    浏览(46)
  • 【C语言】文件操作详细讲解

    本章要分享的内容是C语言中文件操作的内容,为了方便大家学习,目录如下 目录 1.为什么要使用文件 2.什么是文件 2.1   程序文件 2.2 数据文件 2.3   文件名 3.文件的打开和关闭 3.1文件指针  3.2打开和关闭 4.文件的顺序读写 4.1顺序读写函数介绍 4.1.1   fputc 4.1.2   fgetc 4.1

    2023年04月15日
    浏览(40)
  • Linux shell操作.csv文件

    使用Shell处理CSV文件时,可以借助以下命令和技巧来进行常见的操作: 读取CSV文件:使用 cat 命令结合重定向符号( 、 )或管道( | )来读取CSV文件的内容。 提取特定列:使用 cut 命令可以提取CSV文件中的特定列。 过滤行:使用 grep 命令可以根据某些条件筛选CSV文件中的行

    2024年02月09日
    浏览(28)
  • Shell命令操作Linux文件系统

      Linux文件系统是计算机操作系统中的一个关键组成部分,它用于管理和组织计算机上的数据和信息。先到根目录,然后打印当前目录下文件:   有一些比较常用的文件夹介绍如下:    /bin ——包含常见Linux 用户命令,比如 ls、sort、date和l chmod。    /home ——包含分

    2024年02月09日
    浏览(39)
  • 超详细讲解C语言文件操作!!

    磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。 1、程序文件 包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。 2、数据文件 文件的内容不一定是

    2023年04月15日
    浏览(37)
  • 【Shell 命令集合 系统管理 内置命令】⭐⭐Linux 退出当前的Shell会话 exit命令 使用指南

    Shell 命令专栏:Linux Shell 命令全解析 exit命令是Linux操作系统中的一个内置命令,用于退出当前的Shell会话。 当我们在终端中运行exit命令时,它会终止当前的Shell进程,并返回到上一级Shell或者关闭终端窗口。它可以用于退出当前登录的用户会话,或者在脚本中用于结束程序的

    2024年02月04日
    浏览(73)
  • 【Linux】Linux之间如何互传文件(详细讲解)

    👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 在两台Linux机器之间传输文件,通常有以

    2024年02月04日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包