Unix Shell脚本编程知识点

脚本编程语言与编译型语言:

脚本编程语言:(Bash)

脚本编程语言通常是解释型(interpreted),主要由解释器(interpreter)读入程序代码,并将其转换成内部的形式加以执行。

优点:

能够轻易处理文件与目录之类的对象。

缺点:

运行效率通常不如编译型语言

编译型语言:(C、C++、Java、Fortran、Ada、Pascal)

编译型语言多半运作于底层,所处理的是字节、整数、浮点数或其它及其机器层经的对象。

SHELL脚本的基本语法格式:

脚本必须以#!开头:(# cat /etc/shells)

例如#!/bin/bash(解释器)

# 其中间可以添加一些注释信息,例如脚本的使用方法、脚本的功能、创建日期、作者等相关信息

然后赋予脚本具有执行权限,# chmod +x scripts.sh

执行则使用./scripts.sh ##也可以将此脚本的路径添加到PATH变量中,以后直接使用脚本名称直接运行。

脚本的测试工具bash:

-n:检查脚本是否有语法错误,有则显示错误信息,否则无信息(没有消息才是最好的消息)

-x:检查脚本在执行中的详细过程(排错时,经常会用到)

exit:退出脚本(其数值为0-255)  

如果脚本没有明确定义退出码,那么在执行脚本结束前的退出码为此脚本的退出码。

# echo $?     ##查看上一个命令执行结果所显示的状态码

SHELL脚本的逻辑关系总结:

逻辑与:符号为&&:  

如果其中一个为假,则结果一定为假  

如果第一个条件结果为假,则第二个条件不用再判断,最终结果已显示  

如果第一个条件结果为真,则第二个条件必须判断

范例:

# useradd redhat && echo "redhat" | passwd --stdin redhat

解说:如果useradd redhat执行成功,则继续执行下一条命令,否则终止。

逻辑或||:

如果其中一个条件结果为真,则结果一定为真,不用检查后面的语句  

如果其中一个条件结果为假,则检查下一个条件语句

范例:

# id redhat || useradd redhat

解说:如果redhat用户存在,就显示redhat用户相关信息,否则添加此账户。

逻辑与和逻辑或联合使用范例:

# id redhat && echo “redhat already existing“ || useradd redhat

解说:如果redhat用户存在,则显示redhat用户已存在,否则添加此账户。

时间: 2024-08-18 04:17:06

Unix Shell脚本编程知识点的相关文章

shell脚本编程实现9*9乘法表

 这篇文章主要介绍了shell脚本编程实现9*9乘法表,本文直接给出实现代码,并同时总结了实现代码中的知识点,需要的朋友可以参考下     脚本内容   代码如下: #!/bin/bash for i in "1" "2" "3" "4" "5" "6" "7" "8" "9" do for j in "1"

[网摘学习]Shell脚本编程学习入门:Shell编程基础

51cto的这篇文章不错,收藏一下:http://os.51cto.com/art/201109/294521.htm(版权归原作者所有) Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):   #!/bin/sh ... 注意:最好使用"!/bin/bash"而不是"!/bin/sh",如果使用tc shell改为tcsh,其

Shell脚本编程学习入门 02

Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):   #!/bin/sh ... 注意:最好使用"!/bin/bash"而不是"!/bin/sh",如果使用tc shell改为tcsh,其他类似. 符号#!用来告诉系统执行该sell脚本的程序,本例使用/bin/sh.编辑结束并保存后,如果要执行该shell脚本,必须先使其可执

LFCS 系列第十讲:学习简单的 Shell 脚本编程和文件系统故障排除

理解终端Terminals和 Shell 首先要声明一些概念. Shell 是一个程序,它将命令传递给操作系统来执行. Terminal 也是一个程序,允许最终用户使用它与 Shell 来交互.比如,下边的图片是 GNOME Terminal. Gnome Terminal 启动 Shell 之后,会呈现一个命令提示符 (也称为命令行) 提示我们 Shell 已经做好了准备,接受标准输入设备输入的命令,这个标准输入设备通常是键盘. 你可以参考该系列文章的 第一讲 如何在 Linux 上使用 GN

shell脚本编程遇到的问题

问题描述 shell脚本编程遇到的问题 初学shell编程,在网上看到了的一段判断文件夹是否时空的代码,于是想着拿来测试一下.先贴那段代码吧 #!/bin/sh #ifdirec DIRECTORY=$1 #在此加上是不是目录的判断. if [ "`ls -A $DIRECTORY`" = "" ]; then echo "$DIRECTORY is indeed empty" else echo "$DIRECTORY is not

Linux系统shell脚本编程――生产实战案例

Linux系统shell脚本编程――生产实战案例 在日常的生产环境中,可能会遇到需要批量检查内网目前在线的主机IP地址有哪些,还可能需要检查这些在线的主机哪些端口是开放状态,因此依靠手工来检查是可以实现,但比较费时费力,所以需要结合shell脚本来实现批量检查的功能,那么今天就来做个小小的实验. 1.开发脚本前准备 一般大家都知道,测试主机是否在线,常用的命令无非就是ping.nmap,因此,首先找一个地址来测试下ping命令的效果 [root@centos6 scripts]# ping 17

shell脚本编程问题,急求

问题描述 shell脚本编程问题,急求 有个问题,写了个shell脚本,执行是会有两个进程出现, jboss5 7852 7678 0 18:01 pts/2 00:00:00 /bin/bash ./logzipok.sh jboss5 7893 7852 0 18:01 pts/2 00:00:00 /bin/bash ./logzipok.sh 这是为是什么,之前没有这问题,在脚本中填入了下面函数,才有这问题,有人知道为什么吗? removevar() { mkdir -p /opt/ap

Linux/Unix shell 脚本跨服务器跨实例执行SQL

      在DB运维的过程中,难免碰到需要跨多个服务器以及多个Oracle实例查询数据库的情形.比如我们需要查看当前所有生产环境数据库上open_cursor参数的值以便考虑是否需要增加.而需要查看的数据库服务器上有多个实例,同时又存在多个数据库服务器,这样子下来,几十个DB,上百个的情形一个个查,那得把人给累死.那就像点办法撒,写个shell脚本,轮巡所有服务器及服务器上的所有实例.见本文的描述.      关于shell脚本中如何调用SQL,可以参考下列链接:           Linu

Shell脚本编程学习入门 01

从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用.深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修功课之一. Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh).Bourne A