三、shell中级学习(函数、io、文件包含)

1、函数

        对于shell脚本来说,用户是可以自己定义自己需要的函数的,用于处理部分功能,函数定义格式如下:

fun(){

        action;

        return xxx;

}

        对于函数返回值来说,可以写return语句也可以不写,如果不写,则默认返回最后一条语句的执行结果。函数返回值在调用该函数后通过 $? 来获得。例如:

#!/bin/bash

fun(){
	echo "输入第一个数";
	read num1;
	echo "输入第二个数";
	read num2;

	return $(($num1+$num2))

}

fun
echo "两数和为:$?"


read -n 1 # 确保运行完不进行退出

结果为:

输入第一个数
2
输入第二个数
3
两数和为:5

1.1、传递参数

        对于函数来说,传入参数这个功能是必不可少的,如果一个语言可以定义函数,但不能传入参数,那确实有点鸡肋了。shell脚本可以传入参数,在调用函数时将需要的参数传进去即可。函数内部获取时只需要通过 $n 的形式来获取,n表示参数的位置。例如:

#!/bin/bash

fun(){
	echo "第一个数${1}";
	echo "第三个数${3}";

}

fun 1 2 5


read -n 1 # 确保运行完不进行退出

结果:

第一个数1
第三个数5

另外,还有几个特殊字符用来处理参数:

参数处理说明
$#传递到脚本或函数的参数个数
$*以一个单字符串显示所有向脚本传递的参数
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@与$*相同,但是使用时加引号,并在引号中返回每个参数。
$-显示Shell使用的当前选项,与set命令功能相同。
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

2、Shell 输入/输出重定向

此部分内容较为简单

命令说明
data > file将输出重定向到 file。
data< file将输入重定向到 file。
data>> file将输出以追加的方式重定向到 file。
a > file将文件描述符为 a 的文件重定向到 file。
a >> file将文件描述符为 a 的文件以追加的方式重定向到 file。
a >& m将输出文件 m 和 a 合并。
a <& m将输入文件 m 和 a 合并。
<< tag将开始标记 tag 和结束标记 tag 之间的内容作为输入。

/dev/null 文件

对于部分命令,我们只希望运行该命令,但不希望显示输出的结果,那我们可以将输出重定向到/dev/null 文件,该文件是个空文件,所有输出到这个文件的数据皆被丢弃。

比较常用的命令是:

$ command > /dev/null 2>&1

表示将输出重定向至/dev/null 文件中,标准错误输出指定到标准输出中

注意:0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。

3.文件包含

文件包含格式:

. file   # 点号(.)和文件名中间有一空格
或
source file

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值