Shell笔记(3)
函数
1、定义格式
[function] funName[()]
{
action;
[return int;]
}
[]代表可选项
#!/bin/bash
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 示例: #!/bin/bash cat << EOF hello , my son EOF ******结尾的 delimiter 一定要顶格写,前面不能有任何字符,包括空格和tab。开头的会忽略掉空格
-
4、/dev/null 文件
- 当希望执行某个文件,又不希望输出在屏幕上,可以将输出重定向到 /dev/null
- 写到它的内容都会被丢弃,尝试读该文件,啥都不会读到。可以起到禁止输出的作用,很有用
将标准输出和错误输出定向到该文件夹
command > /dev/n 2>&1
文件包含
-
Shell可以包含外部脚本,用以方便的封装一些公用的代码作为独立的文件
-
用法:
. filename #注意 . 和filenema之间要有一个空格 source filename
-
示例:
1、创建一个没有执行权限的文件 test1.sh #!bin/bash url="http://www.baidu.com" 2、创建test2.sh文件,添加可执行权限 test2.sh #!bin/bash . ./test1.sh echo "网址:$url" source test1.sh echo"网址:$ur"