shell编程学习笔记(五)——函数/传递参数/重定向/文件包含

本文仅仅是学习笔记!

目录

shell函数

函数传递参数

 Shell 输入/输出重定向

Shell 文件包含 


shell函数

shell可以定义函数,在shell脚本中可以随便调用。

格式:

[ function ] funname [()]
{
    action;
    [return int;]
}

 注:

(1)可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。

(2)return: 返回,不加将以最后一条命令运行结果作为返回值; return后跟数值n(0-255)。

例:

#!/bin/bash
echo "相加函数"
fun1(){
echo "请输入两个数"
echo "第一个"
read A
echo "第二个"
read B
echo "这两个数是$A和$B"
return $(($A+ B))
}
fun1
echo "和为:$?"

 注:

(1)$? :获得函数返回值;

(2)函数放在脚本开始部分,shell解释器首次发现它时,才可使用;

(3)使用函数名调用函数。

函数传递参数

调用函数时可以向其传递参数。

在函数体内部,通过 $n 的形式来获取参数的值。

#!/bin/bash
fun(){
echo "第1个参数为 $1"
echo "第2个参数为 $2"
echo "第10个参数为 ${10}"
echo "第15个参数为 ${15}!"
echo "参数总数有 $#个"
echo "输出所有参数 $*"
}
fun 1 2 3 4 5 6 7 8 9 10 11 23 34 45 56

 注:

(1)当n>=10时,需要使用${n}来获取参数。

处理参数的特殊字符:

$#:传递到脚本或函数的参数个数;

$*:以一个单字符串显示所有向脚本传递的参数;

$$:脚本运行的当前进程ID号;

$!:后台运行的最后一个进程的ID号;

$-:显示Shell使用的当前选项,与set命令功能相同;

$?:显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

 Shell 输入/输出重定向

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

 注:文件描述符 0 通常是标准输入,1 是标准输出,2 是标准错误输出。

输出重定向

 输入重定向

重定向深入 

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

标准输入文件(stdin):stdin的文件描述符为0。

标准输出文件(stdout):stdout 的文件描述符为1。

标准错误文件(stderr):stderr的文件描述符为2。

默认情况下,command > file 将 stdout 重定向到 file;

command < file 将stdin 重定向到 file;

command 2>file把stderr 重定向到 file。

Here Document

将两个 delimiter 之间的内容(document) 作为输入传递给 command。

command << delimiter
    document
delimiter

/dev/null 文件 

/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃。

执行某个命令,不显示输出结果,可以将输出重定向到 /dev/null

 command > /dev/null

屏蔽 stdout 和 stderr

command > /dev/null 2>&1

Shell 文件包含 

Shell可以包含外部脚本,可以很方便的封装一些公用的代码作为一个独立的文件。 

格式:

. filename # 注意点号(.)和文件名中间有一空格

source filename

注:被包含的文件 test1.sh 不需要可执行权限。


版权声明:本文为qq_55906442原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。