shell函数
(1)一般定义
图 1执行结果
图 2注:
- 函数定义function fun()或者fun()
- 参数返回可以加return,不加将最后一条作为返回值返回
- 函数使用前必须定义,放在脚本开始部分,返回值通过$?来获取
(2)函数参数
图 3执行结果
图 4注:
- 获取参数个数n<10,{n}获取
- 图 4第十一个参数显示正确因为,$1获取到11拼上后面的1恰好是111(被自己的例子坑到了,想了半天)
(3)字符说明
参数处理 | 说明 |
---|---|
$# | 传递到脚本或函数的参数个数 |
$* | 以一个字符串显示所有向脚本传递的参数 |
$$ | 脚本运行当前进程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之间的内容作为输入 |
echo 新增内容 > test.txt
原有内容被覆盖
图 5echo 新新增内容 >> test.txt
在原来内容上新加
图 6注:一般情况Unix/Linux命令都会打卡三个文件
- 标准输入stdin(默认):文件描述0
- 标准输出stdout(默认):文件描述1
- 标准错误stderr:文件描述2
如果希望stderr重定向到file,如下:
command 2>file
/dev/null
command > /dev/null
command > /dev/null 2>&1
起到禁止输出的效果(屏蔽stdout和stderr),2与>之间不能有空格,2>才表述错误输出
2020-01-02补充
shell文件包含
shell可以包含外部文件,这样可以封装一些公用的代码作为独立文件,语法如下:
. filename #注意(.)后面必须要有空格
或者
source filename
示例:
创建两个shell脚本文件,赋予执行文件执行权限,被调用文件不需要
网友评论