函数
1、定义格式
| [function] funName[()] |
| { |
| action; |
| [return int;] |
| } |
| |
| []代表可选项 |
| |
| |
| demoFun(){ |
| echo "这是我的第一个 shell 函数!" |
| } |
| echo "-----函数开始执行-----" |
| demoFun |
| echo "-----函数执行完毕-----" |
| return 3 |
| |
| demoFun |
| echo "return val is $?" |
2、函数参数
| #!/bin/bash |
| funWithParam(){ |
| echo "第一个参数为 $1 !" |
| echo "第二个参数为 $2 !" |
| echo "第十个参数为 $10 !" |
| echo "第十个参数为 ${10} !" |
| echo "第十一个参数为 ${11} !" |
| echo "参数总数有 $# 个!" |
| echo "作为一个字符串输出所有参数 $* !" |
| } |
| |
| 调用: |
| funWithParam 1 2 3 4 5 6 7 8 9 34 73 |
| ***** |
| 注意:当参数的个数 >10 的时候,要用${10}来获取 |
重定向
1、重定向命令列表
命令 |
说明 |
command > file |
输出重定向到 file |
command < file |
输入重定向到 file |
command >> file |
以追加方式输出冲顶定向到file |
n > file |
将文件描述符为 n 的文件重定向到 file |
n >> file |
追加 |
n >& m |
将输出文件n和m 合并 |
n <& m |
输入合并 |
<< tag |
将开始标记tag 和结束标记tag之间的内容作为输入 |
- 文件描述符 0 通常是标准输入(STDIN)、1是标准输出(STDOUT)、 2是标准错误输出
| 示例: |
| 1、who > users |
| 2、echo "haha,xiaosile" >users |
| 3、wc -l [>] a.log 统计行数,[]代表可选 。不加重定向会输出文件名字,加了不输出名字。 |
| 4、command < inFile > outFile :从infile读入输出到 outfile |
2、一点注意
| 1、错误重定向到文件:(2代表错误输出) |
| command 2 > file |
| command 2 >> file |
| 2、标准输出和错误输出到同一个文件 |
| command > file 2>&1 |
3、Here Document
-
一种特殊的重定向方式,将输入输出重定向到一个交互式shell脚本或者程序
-
基本形式
| command << delimiter |
| document |
| delimiter |
| |
| 示例: |
| |
| cat << EOF |
| hello , my son |
| EOF |
| |
| ******结尾的 delimiter 一定要顶格写,前面不能有任何字符,包括空格和tab。开头的会忽略掉空格 |
-
![image-20220328172406502]()
4、/dev/null 文件
- 当希望执行某个文件,又不希望输出在屏幕上,可以将输出重定向到 /dev/null
- 写到它的内容都会被丢弃,尝试读该文件,啥都不会读到。可以起到禁止输出的作用,很有用
| 将标准输出和错误输出定向到该文件夹 |
| command > /dev/n 2>&1 |
文件包含
-
Shell可以包含外部脚本,用以方便的封装一些公用的代码作为独立的文件
-
用法:
| . filename |
| source filename |
-
示例:
| 1、创建一个没有执行权限的文件 |
| |
| test1.sh |
| |
| url="http://www.baidu.com" |
| |
| 2、创建test2.sh文件,添加可执行权限 |
| test2.sh |
| |
| . ./test1.sh |
| echo "网址:$url" |
| source test1.sh |
| echo"网址:$ur" |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY