Linux笔记——shell补充:参数传递&函数等
列表:
Linux笔记——命令:Sort,uniq,join,cut,paste,split
Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数
鉴于博客,表格&排版&颜色标记等等无法显示,大家可以下载这个笔记的资源
12个文档,不需要积分,以目录+表格+颜色标记形式
下载资源地址http://download.csdn.net/detail/wklken/3815477
The end! Thx! wklken的笔记
-----------------------------------------------
函数定义: |
function_name(){ statements }
必须在调用一个函数之前对它进行定义 shell中不存在向前声明 |
调用 |
function_name params
可以通过return命令让函数返回数字值,或者echo一个字符串返回 |
退出状态: |
|
退出值为 0 表示成功 退出值非 0 表示失败 当一个命令因为严重的信号 N 退出时,bash 将使用 128+N 作为它的退出状态 |
|
出现一个信号 |
128及以上 |
命令没找到: |
127 |
文件找到但不可执行: |
126 |
展开或重定向中的错误:脚本程序可使用的错误代码 |
1-125 |
所有的内建命令在用法错误时返回 |
2 |
成功 |
0 |
参数传递: |
参数使用与位置参数一样 $1, $2, …… $@, $* $# func $var1 $var2 注:变量中间用空格、Tab分割 |
返回值 |
return:主要用来返回退出状态,即$? 0 <= 返回值(整数) <= 255; 0 为无错误; 非0 为有错误; 注:如果返回其他数据,可以使用echo或者全局变量 return_var=`func $var1 $var2`
|
标准I/O |
Linux 默认提供了三个I/O 通道: Standard Input (标准输入,文件描述符:0) – 默认是键盘 Standard Output (标准输出,文件描述符:1) – 默认是终端 Standard Error (标准错误,文件描述符:2) – 默认是终端
|
调试脚本 |
||
命令行选项 |
Set选项 |
说明 |
sh –n <script> |
set –o noexec set -n |
只检查语法错误,不执行命令 |
sh –v <script> |
set –o verbose set –v |
在执行命令之前回显它们 |
sh –x <script> |
set –o xtrace set –x |
在处理命令之后回显它们 |
sh –u <script> |
set –o nounset set -u |
如果使用了未定义的变量,就给出出错信息 |
-o选项启用设置 +o选项取消设置 |
AND列表 |
作用:只有前面所有的命令都执行成功的情况下才执行最后一条命令 Statement1 && statement2 && statement3 && ….. 从左到右顺序执行每条命令,如果一条命令返回true,右边的下一条命令才能执行 &&命令作用是检查前一条命令的返回值 if [ -f file_one ] && echo “hello” && [ -f file_two ] && echo “ there” then …… fi
|
OR列表 |
作用:持续执行一系列命令,知道有一条命令成功为止 Statement1 || statement2 || statement3 || …. 从左顺序开始执行每条命令,若是一条命令返回false,它右边的下一条命令才能够被执行,如此持续到知道有一条命令返回true,或者列表中所有命令都执行完毕 if [ -f file_one ] || echo “hello” || echo “ there”
|
内置命令补充: |
:命令 |
冒号(:)是一个空命令,偶尔用于简化条件逻辑,相当于true的一个别名。 例如 while : 也用于在变量的条件设置中 例如 : ${var:=value} if ….;then : fi |
.命令 |
用于在当前shell中执行命令 . ./shell_script 相当于source命令 在执行脚本程序中列出的命令时,使用的是调用该脚本程序的同一个shell
|
echo命令 |
输出结尾带有换行符的字符串 echo –n “string to output” bash风格去换行符 |
eval命令 |
允许对参数进行求值,是shell的内置命令 即允许代码被随时生成和运行 |
exec命令 |
两种用法 典型:将当前shell替换为一个不同的程序 exec wall “Thanks for all the fish”
第二种用法修改当前文件描述符 exec 3 < afile |
exit n命令 |
使脚本程序以退出码n结束运行 若是在脚本退出时不指定退出状态,那么该脚本最后一条被执行命令状态将被用作返回值 |
export命令 |
将作为它参数的变量导出到子shell中,并使之在子shell中有效 export把自己的参数创建为一个环境变量,而这个环境变量可以被当前程序调用的其他脚本和程序看见 被导出变量构成从该shell衍生的任何子进程的环境变量 |
expr命令 |
将它的参数当做一个表达式来求值,最常见用法简单数学运算 x=`expr $x + 1` 注意,运算符两边空格必须 x=$(expr $x + 1) |
printf命令 |
格式化输出 d 十进制 C 一个字符 S 一个字符串 % 一个%字符
printf “%s\n” hello printf “%s %d” “Hi” 6
|
return命令 |
使函数返回,可有一个数值参数,作为该函数的返回值,如果不带参数,return命令默认返回最后一条命令的退出码
|
set命令 |
为shell设置参数变量 set $(date) echo The month is $2
即参数的值作为当前脚本参数列表了 |
shift命令 |
把所有参数变量左移一个位置,是$2->$1 $3->$2原来$1被丢弃,$0保持不变 可带参数表示左移一个数值参数
|
trap命令 |
用于指定接收到信号后要采取的行动 常见用途:在脚本程序被中断时完成清理工作 trap command signal 注:脚本程序通常是从上到下顺序解释执行的,必须在想保护那部分代码之前指定trap命令 HUP(1) 挂起,中断掉线或用户退出 引发 INT(2)中断 ctrl+c组合键发生 QUIT(3)退出,ctrl+\组合键发生 ABRT(6)中止,默写严重的执行错误引发 ALRM(14)报警,用来处理超时 TERM(15)终止,系统关机时发出
|
unset命令 |
从环境变量中删除变量或函数 不能删除shell本身定义的只读变量 |
BP: 使用命令扩展: $() 代替反引号`` $(( …. )) 代替expr算术运算
参数扩展: for I in 1 2 do process ${i}_tmp done
${param:-default} 如果param为空,设为默认值 ${#param} 给出param长度 ${param%word} 从param尾部开始,删除与word匹配的最小部分,返回剩余部分 ${param%%word} 长 ${param#word} 头部 小 ${param##word} 头部 长
|