设为首页 收藏本站
查看: 1871|回复: 0

shell脚本编程之补充知识点

[复制链接]

尚未签到

发表于 2018-8-28 10:40:16 | 显示全部楼层 |阅读模式
  一、处理用户输入
  shell中使用read命令来实现与用户的交互输入。
  格式:read [options] 变量
  常用选项:
  -p “提示信息”:显示提示信息;
  -t #:等待用户输入的秒数;
  -a:输入数组元素。
DSC0000.jpg

  二、生成随机数
  使用变量RANDOM可以生成随机数,取值范围为0-32768。
DSC0001.jpg

  随机数相关的设备文件:/dev/random、/dev/urandom。
  三、输出字体的控制
  shell中可以对输出的字体进行定义,下面的例子中对"hello"的字体进行了编辑。
DSC0002.jpg

  格式说明:
  \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 ${#变量名}
DSC0003.jpg

  2、变量赋值
  ${parameter:-word}:如果parameter为空或未定义,则返回为"word";否则,返回parameter的值;
DSC0004.jpg

  ${parameter:+word}:如果parameter为空或未定义,则不做任何操作;否则,返回"word";
DSC0005.jpg

  ${parameter:=word}:如果parameter为空或未定义,不但返回"word";而且将parameter赋值为"word";
DSC0006.jpg

  ${parameter:?word}:如果parameter为空或未定义,则返回内容为"word"的报错信息,否则返回parameter的值。
DSC0007.jpg

  ${parameter:offset:length}:如果将parameter偏移offset个字符,并截取length长度的字符;
DSC0008.jpg

  五、函数中的局部变量
  函数中可以定义只在函数内部生效的变量,其作用域只在函数内有效。
  格式:local 变量名=值
DSC0009.jpg

  上例的结果说明了局部变量的作用域只在函数内,再来看下未声明为局部变量的结果:
DSC00010.jpg

  六、创建临时文件或目录
  命令格式:mktemp [options] [template]
  常用选项:
  -d:创建目录;
  template格式:name.XXX
  XXX:三个大写x,用于自动生成随机数。
  eg:mktemptemp.XXX
DSC00011.jpg

  七、信号
  1、常用的信号类型:
  1:SIGHUP  挂起进程
  2:SIGINT  终止进程
  9:SIGKILL  强制终止进程
  15:SIGTERM  正常终止进程
  脚本中能实现信号捕捉,但9和15无法捕捉。
  我们常用的ctrl+c快捷键发送的是SIGINT信号。
  可以使用kill -l来查看所有的信号。
  2、信号捕捉
  使用trap命令可以实现信号捕捉,并针对捕捉到的信息指定想要执行的命令。
  命令格式:trap “命令1;命令2” 信号列表
DSC00012.jpg

  上例中当使用Ctrl+c时就会出现"Hi,byeybye"的信息。
DSC00013.jpg

  上面这个脚本使用Ctrl+c无法终止,因为信号INT产生的命令为echo "go...";
DSC00014.jpg

  trap还可以捕捉到脚本的退出,如下例所示:
DSC00015.jpg

  可以使用单有破折线来移除捕捉命令,格式为:trap - 信号
DSC00016.jpg

  上例中在命令行定义捕捉到INT信号时显示"Hello”,此时只要使用Ctrl+c快捷键就会显示“Hello”,只有在使用了移除命令之后才能恢复默认的信号命令。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-557633-1-1.html 上篇帖子: SHELL编程四剑客练习--find 下篇帖子: SSH防止暴力破解 shell script
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表