函数与输入输出重定向 shell笔记6

本文详细解析Linux Shell中的函数定义、参数传递及输入输出重定向技巧,包括函数的定义格式、参数获取方式及重定向符号的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

函数

函数参数

输入输出重定向

重定向深入讲解


函数

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。函数需要在前面先定义了才能用,shell中没有函数声明这一说。

shell中函数的定义格式如下:

[ function ] funname [()]
{
    action;

    [return int;]

}

说明:

  • 1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
  • 2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)
  • funWithReturn(){
  •     echo "这个函数会对输入的两个数字进行相加运算..."
  •     echo "输入第一个数字: "
  •     read aNum
  •     echo "输入第二个数字: "
  •     read anotherNum
  •     echo "两个数字分别为 $aNum 和 $anotherNum !"
  •     return $(($aNum+$anotherNum))
  • }
  • funWithReturn
  • echo "输入的两个数字之和为 $? !"
  • 输出类似下面:
  • 这个函数会对输入的两个数字进行相加运算...
  • 输入第一个数字:
  • 1
  • 输入第二个数字:
  • 2
  • 两个数字分别为 1 2 !
  • 输入的两个数字之和为 3 !
  • 函数返回值在调用该函数后通过 $? 来获得。
  • 注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。

 

函数参数

在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...

funWithParam(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 12 13 4 15 6 7 8 9 34 73
输出结果:
第一个参数为 1 !
第二个参数为 12 !
第十个参数为 10 !
第十个参数为 34 !
第十一个参数为 73 !
参数总数有 11 个!
作为一个字符串输出所有参数 1 12 3 4 5 6 7 8 9 34 73 !

注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。

 

输入输出重定向

感觉和linux命令里的重定向差不多

重定向一般通过在命令间插入特定的符号来实现。特别的,这些符号的语法如下所示:

command1 > file1

上面这个命令执行command1然后将输出的内容存入file1。

注意任何file1内的已经存在的内容将被新内容替代。如果要将新内容添加在文件末尾,请使用>>操作符。

命令

说明

command > file

将输出重定向到 file。

command < file

将输入重定向到 file。

command >> file

将输出以追加的方式重定向到 file。

n > file

将文件描述符为 n 的文件重定向到 file。

 

重定向深入讲解

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

  • 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
  • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
  • 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。

默认情况下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。

如果希望 stderr 重定向到 file,可以这样写:

$ command 2 > file

如果希望 stderr 追加到 file 文件末尾,可以这样写:

$ command 2 >> file

2 表示标准错误文件(stderr)。

如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:

$ command > file 2>&1
或者
$ command >> file 2>&1

 

深入理解可见:

https://www.runoob.com/linux/linux-shell-io-redirections.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值