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

第 三 十 一 天:shell 脚 本 (一)

[复制链接]

尚未签到

发表于 2018-8-29 06:09:51 | 显示全部楼层 |阅读模式
  小Q:一个人事业上的成功,仅%15是由于他的专业技术,另外的%85要依赖他的人际
  关系.外世技巧;软与硬是相对而言的,专业技术是硬本领,而基于处理人际关
  系的交际本领则是软本领                ---卡耐基
一:简介  
二:shell脚本格式
  
三:shell执行方式
  
四:shell查看方式
  
五:shell变量及例题
  一:简介
  
  脚本:(Script languages)是为了缩短传统的编写-编译-链接-运行过程而创建的计算机
  编程语言;是比HTML超文本标记语言高级,比c·java编程语言低级的脚本语言;
  一般以文本形式存在,类似于一种命令,不需要编译;
  
  特征: 程序代码即是脚本程序,亦是最终可执行文件。
  分类: 独立型:在其执行时完全依赖于解释器;
  嵌入型:通常在编程语言中(如C,C++,VB,Java等)被嵌入使用。
  举例:
  如果建立了一个程序,可以打开.aa为扩展名的文件,当别人编写了.aa文件后,脚本就可以自动对其操作。
  分类:
  1.工作控制语言和shell
  2.GUI脚本:一种专业的控制计算机的语言;在用户和图形界面等之间互动。
  3.WEB编程脚本:应用程序定制的脚本语言,用于提供WEB页面的自定义功能。
  4.应用程序定制的脚本语言:许多大型的应用程序都根据用户需求定制惯用的脚本语言。
  5.文本处理语言:处理基于文本的记录是脚本语言最早的用处之一。awk perl
  6.通用动态语言:一些语言,比如Perl,从一门脚本语言发展成了更通用的编程语言。
  7.扩展/可嵌入语言:少数的语言被设计通过嵌入应用程序来取代应用程序定制的脚本语言。
  常用脚本语言:
  1.C shell:Bill Joy于20世纪80年代早期,在Berkeley的加利福尼亚大学开发了C shell。
  2.JavaScript:直译式网络脚本语言,已经被广泛用于Web应用开发,它的解释器被称为
  JavaScript引擎,为浏览器的一部分
  3.Python: 是一种面向对象、解释型计算机程序设计语言,Guido van Rossum于1989年
  发明,被昵称为胶水语言,方便连接c·c++等程序结合
  4.PHP:是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使
  用广泛,主要适用于Web开发领域
  5.Perl:一种功能丰富的计算机程序语言,运行在超过100种计算机平台上;设计者为拉里
  ·沃尔(Larry Wall),于1987年12月18日发表
  6.Nuva:是一种面向对象的动态脚本语言,用于代码生成领域外,Nuva语言也能用于开发
  应用程序
  7.Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言
  shell
  Shell:俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(即命令解析器)
  它类似于DOS下的command和后来的cmd.exe。
  两大类
  图形界面shell:(即GUI shell),应用于微软的windows系列操作系统和linux shell包
  括X window manager以及功能更强大的CDE、GNOME、KDE、 XFCE;
  命令行式shell:(即CLI shell)例如bash/sh/ksh/csh(Unix/linux 系统)以及MS-DOS
  系统;
  命令行式shell
  1.bash:GNU Bourne-Again Shell,一般为Linux中的默认shell;
  2.csh: c shell,调用c解释器;
  3.ksh: korn shell,AIX命令;
  4.sh:  shell,调用缺省的shell。
  特点
  如今所有的工作都转向于自动化,运维也是如此;而自动化运维,编写脚本是必不可少的,现在Linux大多默认采用的是bash,他在编程方面相对于另几个相当优秀,并且兼容bsh,我们主要也是学bash。
DSC0000.jpg

  ===========================================================================================
  二:shell脚本结构
  作为一个合格的工作人员,首先要把自己的脚本归档分类,即放在一个特定的目录下,然后分类自己的脚本类别,名字通俗易懂,并以.sh为后缀;
  格式:
  #!/bin/bash
  ##脚本创建人
  ##脚本创建日期
  ##附加的一些备注
  ##脚本所实现的功能
  正 文 ·····
  问题:
  1.在文件里面输入一系列命令,可以直接执行吗?
  可以;我觉得这时调用的是当前用户默认使用的shell。如果其中一个命令有错后面的命令
  还是会继续执行下去的
  2.加#/bin/bash目的是什么,既然不加也可以?
  这行不是注释符,而是说脚本将在什么shell下运行,并且以该shell环境执行脚本。
  举例简单理解:在AIX,即ksh的环境下编写脚本
  #!/bin/ksh
  ##备注说明
  export LOG=/tmp/test.log
  exec  >> $LOG 2>&1
  echo "a test message!"
  exit 0
  执行脚本后,在/tmp下面会有一个test.log文件生成,文件内容为"a test message!"
  如果把#!/bin/ksh   变为   #!/bin/bash   或变为  #!/bin/bash
  执行脚本,会有如下报错:
  export不是shell命令,即在csh里面没有export这个命令。
  ===========================================================================================
  三:shell执行方式
  1.切换到脚本所在的目录(即工作目录)执行shell脚本:
  cd  /data/shell   >>>    ./hello.sh
  2.以绝对路径的方式去执行bash shell脚本
  /data/shell/hello.sh   >>>   回车
  3.直接使用bash 或sh 来执行                       加 -x 选项可以看到过程
  cd /data/shell   >>>  bash  hello.sh /sh hello.sh
  此法可不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash
  路径),因为他是指明的被bash调用的;
  4.在当前的shell环境中执行
  cd /data/shell  >>>  . hello.sh
  前三种方法都是在当前shell(称为父shell)开启一个子shell环境执行脚本,执行完后
  子shell关闭,又回到父shell;
  法四就是在这个子shell环境中执行脚本,完后还是原地不动。
  参考:http://www.jquerycn.cn/a_8354
  ===========================================================================================
  四:shell查看
  echo $SHELL/$o        查看默认的shell
  cat  /etc/shells      查看可以使用的shell
  export                导出为用户环境变量的环境变量
  set                   显示shell的所有设置的环境变量
  env                   列出当前用户的环境变量
  ===========================================================================================
  五:shell变量及例题
  Shell定义变量需要遵循的规则
  1.使用变量无需事先声明
  2.首个字符必须为字母(a-z,A-Z)
  3.中间不能有空格,可以使用下划线(_)
  4.不能使用标点符号
  5.不能使用bash里的关键字
  除了可以以上显示式的赋值,也可以用语句赋值,如 for file in ‘ls /etc’
  注意:要取用一个变量的值,需在变量名前面加一个$ ; 给变量赋值的时候,不能在"="
  两边留空格
  举例:
  1.a=1    >>>   $a   >>>  显示1 ;
  2.#!/bin/bash
  read  -t 5 -p "please input a number:" n   用户交互命令,-t超时限制  -p打印
  echo  $n                                   打印n         -t要在-p前面
  执行后,显示please input a number:    >>     输入字符回车会被打印出来,
  五秒不输入退出交互形式
  3.#!/bin/bash             #!/bin/bash
  a=1;b=2                 a=1;b=2
  c=$a+$b                 c=$【$a+$b】
  echo $c                 echo $c
  执行后显示1+2             执行后显示3
  这是数学表达式的一种格式,多练练就记住了;



运维网声明 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.yunweiku.com/thread-557843-1-1.html 上篇帖子: shell三剑客之sed(一) 下篇帖子: 第 三 十 一 天:shell 脚 本(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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