shell脚本编程之补充知识点
2016-01-14 12:00
726 查看
一、处理用户输入 shell中使用read命令来实现与用户的交互输入。 格式:read [options] 变量 常用选项: -p “提示信息”:显示提示信息; -t #:等待用户输入的秒数; -a:输入数组元素。
二、生成随机数 使用变量RANDOM可以生成随机数,取值范围为0-32768。
随机数相关的设备文件:/dev/random、/dev/urandom。三、输出字体的控制 shell中可以对输出的字体进行定义,下面的例子中对"hello"的字体进行了编辑。
格式说明: \033[m\033: 对于字体定义的规定用法; 下面从左到右以分号为分隔符其含义为: 1:字体的形式,如粗体,斜体,下划线等,取值范围1-7; 37:字体本身的颜色; 30:黑色; 31:红色; 32:绿色; 33:***; 34:蓝色; 35:洋红; 36:青色; 37:白色; 41:字符的背景色,其中4表示字体背景,下一个数字表示背景颜色取值为1-7; 40:黑色; 41:红色; 42:绿色; 43:***; 44:蓝色; 45:洋红; 46:青色; 47:白色; [0m: 表示颜色应用只限于指定字符,如不使用此选项,则下面显示均会带有颜色。四、变量相关 1、获取变量值的长度 格式:echo ${#变量名}
2、变量赋值 ${parameter:-word}:如果parameter为空或未定义,则返回为"word";否则,返回parameter的值;
${parameter:+word}:如果parameter为空或未定义,则不做任何操作;否则,返回"word";
${parameter:=word}:如果parameter为空或未定义,不但返回"word";而且将parameter赋值为"word";
${parameter:?word}:如果parameter为空或未定义,则返回内容为"word"的报错信息,否则返回parameter的值。
${parameter:offset:length}:如果将parameter偏移offset个字符,并截取length长度的字符;
五、函数中的局部变量 函数中可以定义只在函数内部生效的变量,其作用域只在函数内有效。 格式:local 变量名=值
上例的结果说明了局部变量的作用域只在函数内,再来看下未声明为局部变量的结果:
六、创建临时文件或目录 命令格式:mktemp [options] [template] 常用选项: -d:创建目录; template格式:name.XXX
XXX:三个大写x,用于自动生成随机数。 eg:mktemptemp.XXX
七、信号 1、常用的信号类型: 1:SIGHUP 挂起进程 2:SIGINT 终止进程 9:SIGKILL 强制终止进程 15:SIGTERM 正常终止进程 脚本中能实现信号捕捉,但9和15无法捕捉。 我们常用的ctrl+c快捷键发送的是SIGINT信号。 可以使用kill -l来查看所有的信号。 2、信号捕捉 使用trap命令可以实现信号捕捉,并针对捕捉到的信息指定想要执行的命令。 命令格式:trap “命令1;命令2” 信号列表
上例中当使用Ctrl+c时就会出现"Hi,byeybye"的信息。
上面这个脚本使用Ctrl+c无法终止,因为信号INT产生的命令为echo "go...";
trap还可以捕捉到脚本的退出,如下例所示:
可以使用单有破折线来移除捕捉命令,格式为:trap - 信号
上例中在命令行定义捕捉到INT信号时显示"Hello”,此时只要使用Ctrl+c快捷键就会显示“Hello”,只有在使用了移除命令之后才能恢复默认的信号命令。
二、生成随机数 使用变量RANDOM可以生成随机数,取值范围为0-32768。
随机数相关的设备文件:/dev/random、/dev/urandom。三、输出字体的控制 shell中可以对输出的字体进行定义,下面的例子中对"hello"的字体进行了编辑。
格式说明: \033[m\033: 对于字体定义的规定用法; 下面从左到右以分号为分隔符其含义为: 1:字体的形式,如粗体,斜体,下划线等,取值范围1-7; 37:字体本身的颜色; 30:黑色; 31:红色; 32:绿色; 33:***; 34:蓝色; 35:洋红; 36:青色; 37:白色; 41:字符的背景色,其中4表示字体背景,下一个数字表示背景颜色取值为1-7; 40:黑色; 41:红色; 42:绿色; 43:***; 44:蓝色; 45:洋红; 46:青色; 47:白色; [0m: 表示颜色应用只限于指定字符,如不使用此选项,则下面显示均会带有颜色。四、变量相关 1、获取变量值的长度 格式:echo ${#变量名}
2、变量赋值 ${parameter:-word}:如果parameter为空或未定义,则返回为"word";否则,返回parameter的值;
${parameter:+word}:如果parameter为空或未定义,则不做任何操作;否则,返回"word";
${parameter:=word}:如果parameter为空或未定义,不但返回"word";而且将parameter赋值为"word";
${parameter:?word}:如果parameter为空或未定义,则返回内容为"word"的报错信息,否则返回parameter的值。
${parameter:offset:length}:如果将parameter偏移offset个字符,并截取length长度的字符;
五、函数中的局部变量 函数中可以定义只在函数内部生效的变量,其作用域只在函数内有效。 格式:local 变量名=值
上例的结果说明了局部变量的作用域只在函数内,再来看下未声明为局部变量的结果:
六、创建临时文件或目录 命令格式:mktemp [options] [template] 常用选项: -d:创建目录; template格式:name.XXX
XXX:三个大写x,用于自动生成随机数。 eg:mktemptemp.XXX
七、信号 1、常用的信号类型: 1:SIGHUP 挂起进程 2:SIGINT 终止进程 9:SIGKILL 强制终止进程 15:SIGTERM 正常终止进程 脚本中能实现信号捕捉,但9和15无法捕捉。 我们常用的ctrl+c快捷键发送的是SIGINT信号。 可以使用kill -l来查看所有的信号。 2、信号捕捉 使用trap命令可以实现信号捕捉,并针对捕捉到的信息指定想要执行的命令。 命令格式:trap “命令1;命令2” 信号列表
上例中当使用Ctrl+c时就会出现"Hi,byeybye"的信息。
上面这个脚本使用Ctrl+c无法终止,因为信号INT产生的命令为echo "go...";
trap还可以捕捉到脚本的退出,如下例所示:
可以使用单有破折线来移除捕捉命令,格式为:trap - 信号
上例中在命令行定义捕捉到INT信号时显示"Hello”,此时只要使用Ctrl+c快捷键就会显示“Hello”,只有在使用了移除命令之后才能恢复默认的信号命令。
相关文章推荐
- RJ-45接口信号定义
- Ruby中的变量学习总结
- 详解Lua中的变量相关知识点
- 请问在mssql“SQL事件探查器”里表格的标题,如CPU,Read,Write,Duration,SPID.........的解释
- dos批处理文件中的变量小结
- 探索PowerShell(七) PowerShell变量
- VBScript教程 第四课VBScript变量
- 什么是Shell?Shell脚本基础知识详细介绍
- 关于SQL 存储过程入门基础(基础知识)
- perl 变量 $/ 的用法解析 上下文为行模式时,$/ 定义以什么来区分行
- VBS教程:VBScript 基础-VBScript 变量
- Erlang语法学习笔记:变量、原子、元组、列表、字符串
- mssql存储过程表名和字段名为变量的实现方法
- 学习shell脚本之前的基础知识[图文]
- Shell脚本定义变量和重新赋值
- 深入理解C++编程中的局部变量和全局变量
- linux下基于C语言的信号编程实例
- php中动态变量用法实例
- PHP中判断变量为空的几种方法分享
- PHP 第三节 变量介绍