其他编程

shell编程培训,高考编程培训班

2017年10月25日 上午11:496930文章目录引言:什么是Shell?1.Shell的分类看了很多的Shell学习计划,但是最后都没有完成,下面说说我们马哥Linux学习社群的一个人的经历。

引言:什么是Shell?Linux的命令行接口归结起来就是各种Shell,那么到底什么是Shell?

Shell,译为外壳,是用户直接连入计算机所使用的计算机程序,负责解析用户提供的命令,如词法分析、语法分析、句法分析。

1.Shell的分类Linux 的命令 shell 是与操作系统相分离的一层。不同的 shell 环境影响您具备不同的功能,比如可编辑的命令行和历史命令回查等。shell 还决定了脚本中函数的语法。

下面就列举几个常用的Shell:

bash shell 是 Bourne shell 的一个免费版本,它是最早的 Unix shell,包括许多附加的特点。Bash 有可编辑的命令行,可以回查历史命令,支持 tab 键补齐以使用户避免输入长的文件名。

C shell 使用的是“类C”语法,借鉴了 Bourne shell 的许多特点,只是内部 shell 命令集有所不同。

Korn shell 的语法与 Bourne shell 相同,同时具备了 C shell 的易用特点。许多安装脚本都使用 ksh ,即使您不把它作为您的主 shell,您也应该在系统中安装它。

TC shell 是 C shell 的一个增强版本,与 C shell 完全兼容。

Z shell 是 Korn shell 的一个增强版本,具备 bash shell 的许多特色。

> 默认的 shell 是每个用户帐号的一个参数。Linux 中典型的默认 shell 是 /bin/bash,不过也可以用其他的 shell。每个 shell 的 man 文档实际上都非常好,都对各种 shell 及其使用进行了详细的说明。

(0)也许由于一时的冲动使得你开始关注并学习shell编程;亦许由于是“道听途说”shell的威力很大;亦许由于shell编程的魅力;亦许由于作为一个coder的偏好;亦许……

(1)先来搞清楚为什么要学shell,学习要有目的性 —- 简单的说shell就是一个包含若干行Shell或者Linux命令的文件。对于一次编写,多次使用的大量命令,就可以使用单独的文件保存下来,以便日后使用。

shell简单、灵活、高效,特别适合处理一些系统管理方面的小问题

shell可以实现自动化管理,让系统管理员的工作变得容易、简单、高效

shell可以把一些经常需要用的命令或者操作,以文件的形式存储起来,每一次调用即可,不用重复的键入命令

shell脚本可移植性好,在unix/Linux系统中可灵活移植,几乎不用任何设置就能正常运行

shell脚本可轻松方便读取和修改源代码,不需要编译 掌握shell可以帮你解决一些故障问题,比如脚本引起的故障问题

掌握shell是一个中级以上系统工程师必需要会的 掌握shell是你系统管理进阶的必经之路

掌握shell是你面试更高级职位的一块敲门砖

(2)那什么时候不使用Shell 脚本?

资源密集型的任务,尤其在需要考虑效率时(比如排序,hash 等)

需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这种情况一般使用C++或FORTRAN 来处理)

有跨平台移植需求(一般使用C 或Java) 复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等)

对于影响系统全局性的关键任务应用。 对于安全有很高要求的任务,比如你需要一个健壮的系统来防止入侵,破解,恶意破坏等等. 项目由连串的依赖的各个部分组成。

需要大规模的文件操作 或 需要多维数组的支持 需要数据结构的支持,比如链表或数等数据结构

需要产生或操作图形化界面 GUI 需要直接操作系统硬件 需要 I/O 或socket 接口

需要使用库或者遗留下来的老代码的接口 私人的,闭源的应用(shell 脚本把代码就放在文本文件中,全世界都能看到)

如果你的应用符合上边的任意一条,那么就考虑一下更强大的语言吧–或许是Perl,Python,Ruby, 或者是更高层次的编译语言比如C/C++,Java

(1)从脚本编写和执行开始 —— 编写用vim即可,保存为filename.sh文件即可;执行前需要更改为可执行文件或者sh filename.sh来执行:

1)通常shell脚本以.sh为后缀。在编写shell时,第一行一定要指明系统需要哪种shell解释用户的shell程序,如:#!/bin/sh,#!/bin/bash,#!/bin/csh,,#!/bin/tcsh和,#!/bin/ksh等。下面的run.sh则指明使用bash执行。 #!bin/bash ls -l 通常,shell脚本会以#!/bin/sh作为默认的shell程序。执行shell的方式有两种:第一种是为shell脚本加上可执行权限并执行,第二种是通过sh命令执行shell脚本,例如执行当前目录下的run.sh脚本,命令如下: //为shell脚本直接加上可执行权限并执行 chmod 755 run.sh ./run.sh

2)//通过sh命令执行shell脚本

sh run.sh 注意:那为何『 sh shell.sh 』也可以运行呢? 这是因为 /bin/sh 其实就是 /bin/bash(连结档),使用 sh shell.sh 亦即告诉系统,我想要直接以 bash 的功能来运行 shell.sh 这个文件内的相关命令的意思,所以此时你的 shell.sh 只要有 r 的权限即可被运行喔!而我们也可以利用 sh 的参数,如 -n 及 -x 来检查与追踪 shell.sh 的语法是否正确呢 sh -x filename.sh 这会执行脚本并显示脚本中所有变量的取值,也可以使用参数-n,它并不执行脚本,只是返回所有的语法错误。 (2)下面我们从经典的“hello world”入手,看一看最简单的Shell脚本的模样

sudo vim hello.sh:

#!/bin/sh #print hello world in the console window a=”hello world” echo “Hi, ${a}s”

chmod 755 hello.sh 更改为可执行文件 rwx(4,2,1)

sh hello.sh 或者 ./hello.sh

(3)shell里的特殊字符

和其他编程语言一样,shell里也有特殊字符。常见的有美元符号($),反斜线(\)和引号。

美元符号表示变量替换,即用其后面指定的变量的值来代替变量。反斜线“\”为转义字符,转义字符告诉shell不要对其后面的那个字符进行特殊处理,只是当做普通字符。

由双引号括起来的字符,除$,倒引号(`)和反斜线(\)仍保留其特殊功能外,其余字符均作为普通字符对待。 3)单引号(’) 由单引号括起来的字符都作为普通字符出现。

4)倒引号(`) tab键上面那个原始字符

由倒引号括起来的字符串被shell解释为命令行,在执行时,shell会先执行该命令,并以它的标准输出结果取代整个引号部分。

示例1的代码及输出如下: #echo “My current directory is `pwd` and logname is $LOGNAME”【双引号中的倒引号和美元符号保持原来的功能】 My current directory is /root and logname is root 示例2的代码及输出如下: #echo “My current directory is `pwd` and logname is \$LOGNAME”【双引号中的转义字符保持原来的功能】 My current directory is /root and logname is $LOGNAME 示例3的代码及输出如下: #echo ‘My current directory is `pwd` and logname is $LOGNAME’【单引号里面的内容不变】 My current directory is `pwd`and logname is $LOGNAME

shell的变量非常类似于JS 和 Python,不用声明;但是有一点需要注意,变量和等号(即等号前后无任何空格)如 num=10;但是if [ ${num} eq 10 ];then …… fi 这其中的空格必须得有的

(4)shell脚本的注释

shell脚本和其它编程语言一样,也拥有注释。注释方法为在注释行前加#号。 例如以下脚本: #!/bin/sh #Filename: comment.sh #Description:this script explains how to make a comment echo “This script explains how to make a comment ”

创建脚本时,脚本的第一行通常称为shbang(#!)行。当脚本启动后,UNIX内核检查文件的第一行以决定将要执行的程序类型。

shbang符号(#!)后面的路径是用来解释此脚本的shell位置。要

Similar Posts

发表评论

邮箱地址不会被公开。 必填项已用*标注