Linux笔记——shell补充:参数传递&函数等

 

列表:

Linux笔记——vim常用操作及扩展补充[手册]

Linux笔记——linux常用命令集合

Linux笔记——命令:awk

Linux笔记——命令:sed

Linux笔记——命令:grep

Linux笔记——命令:find

Linux笔记——命令:Sort,uniq,join,cut,paste,split

Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数

Linux笔记——条件测试test

Linux笔记——控制流

Linux笔记——shell补充:参数传递&函数等

Linux笔记——正则表达式入门及应用

Linux笔记——linux进程

Linux笔记——SVN命令总结

rpm&yum包管理命令总结

 

鉴于博客,表格&排版&颜色标记等等无法显示,大家可以下载这个笔记的资源

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}          头部                         长

 

 

posted @ 2011-11-19 19:19  夏至冬末  阅读(228)  评论(0编辑  收藏  举报