目录
前言
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,可以这样写:
*bashcommand >file 2>&1
5.垃圾桶
- 这里所说的垃圾桶是一个文件,路径为 /dev/null
- 这是一个黑洞,只能输入,不能输出
- 所以可以将一些不需要观察输出结果的运行文件重定向到这里
总结
完结撒花!!!