文件管理 · 2022年8月27日

shell语言教程|编写shell脚本的基本步骤是什么

㈠ 怎么学习shell

写作思路

为了能快速上手 Shell 语法,在很多时候我会对一些不是很重要的内容进行舍弃。这些内容则会作为补充内容在后续的文章中说明。例如在 Shell 中有许多种循环结构:for 循环、while 循环、util 循环,但实际上 while 循环和 until 循环基本上是一样的。在这种情况下我舍弃对于 until 循环这个语法的介绍。

例如在 Shell 中进行数学运算有很多种方式,可以使用-eq操作符,可以使用==操作符,可以使用=操作符、可以使用(())操作符等等。这个时候我也会进行取舍,取一种最简单、最通用的语法来实现。舍弃一些复杂的语法并不会影响我们使用 Shell 语言,反而会让我们更快入手。

这是本系列跟其他 Shell 入门教程的最大不同,即以快速入手为目的,并不追求大而全。对于入门系列的文章,目前写了大概十四篇。每篇文章阅读不会超过 10 分钟,每个知识点都有相应的代码可以运行,确保小白都能看得懂。

Shell 快速入门(零):目录

Shell 快速入门(一):基础概念

Shell 快速入门(二):环境搭建

Shell 快速入门(三):文件结构

Shell 快速入门(四):如何运行shell脚本

Shell 快速入门(五):如何标记语句的结束

Shell 快速入门(六):基本数据类型

Shell 快速入门(七):变量的使用

Shell 快速入门(八):如何打印字符串

Shell 快速入门(九):如何进行数学运算

Shell 快速入门(十):如何进行数值比较

Shell 快速入门(十一):如何进行字符串比较

Shell 快速入门(十二):选择结构怎么写

Shell 快速入门(十三):循环结构怎么写

Shell 快速入门(十四):函数的使用

㈡ 什么是shell命令语言shell命令语言有什么作用

Shell本身是一个用C语言编写的程序,它是用户使用Unix/linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Unix/Linux使用的熟练程度。注意:单独地学习 Shell 是没有意义的,请先参考Unix/Linux入门教程,了解 Unix/Linux 基础。Shell有两种执行命令的方式:交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。Shell初学者请注意,在平常应用中,建议不要用 root 帐号运行 Shell 。作为普通用户,不管您有意还是无意,都无法破坏系统;但如果是 root,那就不同了,只要敲几个字母,就可能导致灾难性后果。上面提到过,Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本。Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说的是Shell脚本解释器。bashbash是Linux标准默认的shell,本教程也基于bash讲解。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。Linux使用它作为默认的shell是因为它有诸如以下的特色:可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。自动通过查找匹配的方式给出以某字符串开头的命令。包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。shsh 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。ashash shell 是由Kenneth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。cshcsh 是Linux比较大的内核,它由以William Joy为代表的共计47位作者编成,共有52个内部命令。该shell其实是指向/bin/tcsh这样的一个shell,也就是说,csh其实就是tcsh。kshksh 是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。注意:bash是 Bourne Again Shell 的缩写,是linux标准的默认shell ,它基于Bourne shell,吸收了C shell和Korn shell的一些特性。bash完全兼容sh,也就是说,用sh写的脚本可以不加修改的在bash中执行。大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言。编译型语言很多传统的程序设计语言,例如Fortran、Ada、Pascal、C、C++和Java,都是编译型语言。这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作“编译”。运行程序时,直接读取目标代码(object code)。由于编译后的目标代码(object code)非常接近计算机底层,因此执行效率很高,这是编译型语言的优点。但是,由于编译型语言多半运作于底层,所处理的是字节、整数、浮点数或是其他机器层级的对象,往往实现一个简单的功能需要大量复杂的代码。例如,在C++里,就很难进行“将一个目录里所有的文件复制到另一个目录中”之类的简单操作。解释型语言解释型语言也被称作“脚本语言”。执行这类程序时,解释器(interpreter)需要读取我们编写的源代码(source code),并将其转换成目标代码(object code),再由计算机运行。因为每次执行程序都多了编译的过程,因此效率有所下降。使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象;缺点是它们的效率通常不如编译型语言。不过权衡之下,通常使用脚本编程还是值得的:花一个小时写成的简单脚本,同样的功能用C或C++来编写实现,可能需要两天,而且一般来说,脚本执行的速度已经够快了,快到足以让人忽略它性能上的问题。脚本编程语言的例子有awk、Perl、Python、Ruby与Shell。因为Shell似乎是各UNIX系统之间通用的功能,并且经过了POSIX的标准化。因此,Shell脚本只要“用心写”一次,即可应用到很多系统上。因此,之所以要使用Shell脚本是基于:简单性:Shell是一个高级语言;通过它,你可以简洁地表达复杂的操作。可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行。开发容易:可以在短时间内完成一个功能强大又妤用的脚本。但是,考虑到Shell脚本的命令限制和效率问题,下列情况一般不使用Shell:资源密集型的任务,尤其在需要考虑效率时(比如,排序,hash等等)。需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这种情况一般使用C++或FORTRAN 来处理)。有跨平台(操作系统)移植需求(一般使用C 或Java)。复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等)。对于影响系统全局性的关键任务应用。对于安全有很高要求的任务,比如你需要一个健壮的系统来防止入侵、破解、恶意破坏等等。项目由连串的依赖的各个部分组成。需要大规模的文件操作。需要多维数组的支持。需要数据结构的支持,比如链表或数等数据结构。需要产生或操作图形化界面 GUI。需要直接操作系统硬件。需要 I/O 或socket 接口。需要使用库或者遗留下来的老代码的接口。私人的、闭源的应用(shell 脚本把代码就放在文本文件中,全世界都能看到)。如果你的应用符合上边的任意一条,那么就考虑一下更强大的语言吧——或许是Perl、Tcl、Python、Ruby——或者是更高层次的编译语言比如C/C++,或者是Java。即使如此,你会发现,使用shell来原型开发你的应用,在开发步骤中也是非常有用的。

㈢ shell脚本是什么

当执行命令或程序语句是通过程序文件而不是命令行,那这个程序被称为Shell脚本。如果Shell脚本内置很多命令、语句及循环控制,然后一次性执行完毕,这种通过文件执行脚本的方式称为非交互方式。用户可以在Shell脚本中输入一系列命令及命令语句组合。这些命令、变量和流程控制语句等有机地结合在一起,就形成一个功能强大的Shell脚本。

㈣ Linux shell命令讲解

这个题目让人不知道怎么回答,如果真的想全面了解的话,找一本书吧,ABS是本很好的书。Linux Shell命令常用的并不多,尤其是普通用户使用的,就那么几个,cd, mv ,rm 什么的,先掌握那些常用的(一般任何一本讲Linux的书都会列出这些命令),Linux的命令都带有参数,开始不要全掌握,先从简单的来。

㈤ 阐述shell程序的执行和跟踪方法

Shell是什么?任何发明都具有供用户使用的界面。UNIX供用户使用的界面就是Shell(DOS的command熟悉吧,但UNIX的要强大的多)。Shell为用户提供了输入命令和参数并可得到命令执行结果的环境。为了不同的需要,UNIX提供了不同的Shell。现在的UNIX大部分都支持BourneShell,以下教程就以BourneShell(Bsh)为例,一步步的领略UNIX Shell的强大功能,占先其强大魅力,达到更方便灵活的管理、应用UNIX的目的。1.UNIX内核和Shell的交互方法启动UNIX时,程序UNIX(内核)将被调入计算机内存,并一直保留在内存中直到机器关闭。在引导过程中,程序init将进入后台运行一直到机器关闭。该程序查询文件/etc/inittab,该文件列出了连接终端的各个端口及其特征。当发现一个活动的终端时,init程序调用getty程序在终端上显示login等登陆信息。(username和passwd),在输入密码后,getty调用login进程,该进程根据文件/etc/passwd的内容来验证用户的身份。若用户通过身份验证,login进程把用户的home目录设置成当前目录并把控制交给一系列setup程序。setup程序可以是指定的应用程序,通常setup程序为一个Shell程序,如:/bin/sh 即Bourne Shell(command出来了,呵呵)。得到控制后,Shell程序读取并执行文件/etc/.profile以及.profile。这两个文件分别建立了系统范围内的和该用户自己的工作环境。最后Shell显示命令提示符,如$。(这是以bsh为例,若是csh,为.cshrc,ksh为.kshrc,bash为.bashrc等等) 注不妨把/etc/.profile和.profile看成DOS的autoexec.bat 或config.sys文件)当shell退出时,内核把控制交给init程序,该程序重新启动自动登陆过程。有两种方法使shell退出,一是用户执行exit命令,二是内核(例如root用kill命令)发出一个kill命令结束shell进程。shell退出后,内核回收用户及程序使用的资源。用户登陆后,用户命令同计算机交互的关系为:命令进程—>Shell程序—>UNIX内核—>计算机硬件。当用户输入一个命令,如$ls,Shell将定位其可执行文件/bin/ls并把其传递给内核执行。内核产生一个新的子进程调用并执行/bin/ls。当程序执行完毕后,内核取消该子进程并把控制交给其父进程,即Shell程序。例如执行:$ps该命令将会列出用户正在执行的进程,即Shell程序(下来详细说说,别急现在)和ps程序。若执行:$sleep 10 & $ps其中第一条命令将产生一个在后台执行的sleep子进程。ps命令执行时会显示出该子进程。每当用户执行一条命令时,就会产生一个子进程。该子进程的执行与其父进程或Shell完全无关,这样可以使Shell去做其他工作。(Shell只是把用户的意图告诉内核,然后该干嘛干嘛) 现在windows有个计划任务(在固定的时间,日期自动执行某任务),其实UNIX很早就有这个功能了,也就是所谓的Shell的自动执行。一些UNIX资源,如cron可以自动执行Shell程序而无需用户的参与,(这个功能好象在/var/spool/crotab目录里)。Crontab 程序对于系统管理员来说是非常有用的。Cron服务用于计划程序在特定时间(月、日、周、时、分)运行。我们以root的crontab 为例。根用户的crontab 文件放在 /var/spool/crontab/root 中,其格式如下:(1) (2) (3) (4) (5) (6)0 0 * * 3 /usr/bin/updatedb1. 分钟 (0-60)2. 小时 (0-23)3. 日 (1-31)4. 月 (1-12)5. 星期 (1-7)6. 所要运行的程序2.Shell的功能和特点1>命令行解释2>使用保留字3>使用Shell元字符(通配符)4>可处理程序命令5>使用输入输出重定向和管道6>维护一些变量7>运行环境控制8>支持Shell编程对于"命令行解释"就不多说了,就是在shell提示符(例如:"$","%","#"等)后输入一行unix命令,Shell将接收用户的输入。"使用保留字":Shell有一些具有特殊意义的字,例如在Shell脚本中,do,done,for等字用来控制循环操作,if,then等控制条件操作。保留字随Shell环境的不同而不同。"通配符":* 匹配任何位置? 匹配单个字符[] 匹配的字符范围或列表 例如:$ls [a-c]*将列出以a-c范围内字符开头的所有文件$ls [a,m,t]*将列出以e,m或t开头的所有文件"程序命令" :当用户输入命令后,Shell读取环境变量$path(一般在用户自己的.profile中设置),该变量包含了命令可执行文件可能存在的目录列表。shell从这些目录中寻找命令所对应的可执行文件,然后将该文件送给内核执行。"输入输出重定向及管道" :重定向的功能同DOS的重定向功能:">" 重定向输出"<" 重定向输入而管道符号,是unix功能强大的一个地方,符号是一条竖线:"|",用法:command 1 | command 2 他的功能是把第一个命令command 1执行的结果作为command 2的输入传给command 2,例如:$ls -s|sort -nr|pg该命令列出当前目录中的所有文件,并把输出送给sort命令作为输入,sort命令按数字递减的顺序把ls的输出排序。然后把排序后的内容传送给pg命令,pg命令在显示器上显示sort命令排序后的内容。"维护变量" :Shell可以维护一些变量。变量中存放一些数据供以后使用。用户可以用"="给变量赋值,如: $lookup=/usr/mydir该命令建立一个名为lookup的变量并给其赋值/usr/mydir,以后用户可以在命令行中使用lookup来代替/usr/mydir,例如:$echo $lookup结果显示:/usr/mydir为了使变量能被子进程使用,可用exprot命令,例如:$lookup=/usr/mydir$export lookup"运行环境控制" :当用户登陆启动shell后,shell要为用户创建一个工作的环境,如下:1>当login程序激活用户shell后,将为用户建立环境变量。从/etc/profile和.profile文件中读出,在这些文件中一般都用$TERM变量设置终端类型,用$PATH变量设置Shell寻找可执行文件的路径。2>从/etc/passwd文件或命令行启动shell时,用户可以给shell程序指定一些参数,例如"-x",可以在命令执行前显示该命令及其参数。后面详细介绍这些参数。"shell编程" :本文主要介绍的内容。shell本身也是一种语言(*可以先理解为unix命令的组合,加上类C的条件,循环等程序控制语句,类似dos批处理,但要强大的多),用户可以通过shell编程(脚本,文本文件),完成特定的工作。SHELL变量下面我们详细的介绍Bourne Shell的编程:自从贝尔实验室设计了BourneShell。从那时起许多厂商根据不同的硬件平台设计了许多版本得unix。但在众多版本的unix中,Bourne Shell一直保持一致。1>Bsh的启动:用户在登陆后,系统根据文件/etc/passwd中有关该用户的信息项启动Shell。例如某用户在passwd中的信息项为:ice_walk:!:411:103:Imsnow ,ice_walk:/home/ice_walk:/bin/bsh则表明,用户名是ice_walk等信息,在最后一项"/bin/bsh"表明用户的sh环境类型是bsh,于是系统启动之。在启动或执行(包括下面我们要讲的shell程序–脚本)过程中可以使用以下一些参数,我们一一说明:-a 将所有变量输出-c "string"从string中读取命令-e 使用非交互式模式-f 禁止shell文件名产生-h 定义-i 交互式模式-k 为命令的执行设置选项-n 读取命令但不执行-r 受限模式-s 命令从标准输入读取-t 执行一命令,然后退出shell-u 在替换时,使用未设置的变量将会出错-v 显示shell的输入行-x 跟踪模式,显示执行的命令许多模式可以组合起来用,您可以试试了,但-ei好象不行,你说why呢?使用set可以设置或取消shell的选项来改变shell环境。打开选项用"-",关闭选项用"+",多数unix允许打开或关闭a、f、e、h、k、n、uv和x选项。若显示Shell中已经设置的选项,执行:$echo $-Bsh中每个用户的home目录下都有一个.profile文件,可以修改该文件来修改shell环境。为了增加一个可执行文件的路径(例如/ice_walk/bin),可以把下面代码加入.profile中PATH=$PATH:/ice_walk/bin;exprot PATH.profile中shell的环境变量意思如下:CDPATH 执行cd命令时使用的搜索路径HOME 用户的home目录IFS 内部的域分割符,一般为空格符、制表符、或换行符MAIL 指定特定文件(信箱)的路径,有UNIX邮件系统使用PATH 寻找命令的搜索路径(同dos的config.sys的 path)PS1 主命令提示符,默认是"$"PS2 从命令提示符,默认是">"TERM 使用终端类型2>Bsh里特殊字符及其含义在Bsh中有一组非字母字符。这些字符的用途分为四类:作为特殊变量名、产生文件名、数据或程序控制以及引用和逃逸字符控制。他们可以让用户在Shell中使用最少的代码完成复杂的任务。*> Shell变量名使用的特殊字符$# 传送给命令Shell的参数序号$- 在Shell启动或使用set命令时提供选项$? 上一条命令执行后返回的值$$ 当前shell的进程号$! 上一个子进程的进程号[email protected] 所有的参数,每个都用双括号括起$* 所有参数,用双括号括起$n 位置参数值,n表示位置$0 当前shell名*>产生文件名的特殊字符包括"*","?","[]",上面讲过,不再多说。*>数据或程序控制使用的特殊字符>(file) 输出重定向到文件中(没有文件则创建,有则覆盖)>>(file) 输出重定向到文件中(没有则创建,有则追加到文件尾部)<(file) 输入重定向到文件 ; 命令分割符| 管道符 & 后台运行(例如:sleep 10 &) ` ` 命令替换,重定向一条命令的输出作为另一命令的参数。*>对于引用或逃逸的特殊字符Bsh用单引号' '和双引号" "将特殊字符或由空白分隔的字引用起来组成一个?

㈥ 编写一个shell脚本

IP=`ifconfig | grep "inet addr" | awk -F\: '{print $2}'| awk '{print $1}'| head -1`echo "本机IP是$IP"IPLIST=`echo $IP|awk -F. '{print $1"."$2"."$3"."}'`for k in {1..255}doCHECKIP="$IPLIST$k"echo "check $CHECKIP"TMP=`ping -c1 $CHECKIP| grep "packet loss" | awk -F, '{print $3}'| awk '{print $1}'`if [ $TMP = "0%" ] ; thenarp -a | grep "($CHECKIP)" >> goodhostelseecho $CHECKIP >> badhostfidone

㈦ 编写shell脚本的基本步骤是什么

shell脚本只是命令操作的集合。就是把你手动交互输入的命令放在一个文件里专,自动依次执行。步骤大约如属下:1. 在行首指定shell脚本的解析器,如 #!/bin/bash2. 接着依次每行输入shell的操作命令3. 输入完毕后,给文件设置可执行权限并运行。

㈧ 求更好的shell脚本初学者的教程(免费的)并且求各位大拿给初学者点建议。

其实shell脚本非常简单,以前chianitlab曾经录制过linux教学视频,包含了一些shell变成方面的知识,不过回我认为还是太答基础了。我建议你还是看书,先看《Shell脚本学习指南》《实战LINUX+SHELL编程与服务器管理》有了一些shell的基础,在看《高级Bash脚本编程指南》,写shell脚本一定会涉及到sed、awk、正则表达式,然后在看《sed and awk》《精通正则表达式》。

㈨ 如何系统地学习Shell编程

步骤/方法数据库管理系统(DBMSes)诸如PostgreSQL、 Oracle、Microsoft SQL Server,以及Informix这种专业、耐用的数据库管理系统通过存储过程或存储函数提供了脚本功能。最受广泛认可的语言选项也许是Microsoft SQL Server和Sybase所使用的TransactSQL,以及Oracle所使用的PL/SQL。 PostgreSQL提供了一个名为PL/pgSQL的类PL/SQL的程序扩展到SQL里,但它也提供了包括PL/Perl、PL/Python、PL/Ruby和 PL/Tcl在内的其他语言的选择范围。这种编程机会虽然限定于一组特定的问题领域,但如果你是一名DBA(数据库管理员)或你的工作涉及数据库开发报告,将会亲身体验到这是非常有用的。插件 许多新的电脑游戏提供了编写和加载插件的功能。例如,“魔兽世界(World of Warcraft)”提供了一个使用Lua脚本语言的插件系统。随着Firefox声名鹊起和广泛使用,现代网页浏览器往往也提供灵活的插件系统;在最简单的情况下,Firefox的插件都是用JavaScript编写的。开放源码的浏览器在插件开发方面往往比封闭源代码的浏览器更具吸引力,并且Chromium浏览器的插件系统,很可能成为插件开发者们的第二大目标,这是因为谷歌Chrome浏览器高调的营销策略以及不设限的许可证(permissive licensing)政策。其他许多应用程序具有插件和扩展系统,可以提供充分的机会来培养这些迅速发展的编码技能,甚至包括一些终端仿真器(terminal emulators)和基于控制台的文本编辑器,如Vim。(透露一点好消息:我贡献了一点代码到urlpicker项目。)实践问题您可以尝试解决代码任务中的通用清单所提供的问题,代码任务是特别为了给程序员提供实习机会而专业设计的。欧拉(Project Euler)是一个比较流行的、不论编程语言的项目,包括“一系列具有挑战性的数学/计算机编程问题”。欧拉项目收集了上百个问题,这些问题一般从易到难,足以让你忙碌很长一段时间。其他例子包括RubyQuiz,它多年来一直在ruby-talk的邮件列表中广受欢迎。另外还有CodeKata,它是Dave Thomas的一个规模较小、寿命较短的项目。Dave Thomas是《The Pragmatic Programmer(程序员修炼之道)》一书的合著者之一。这些选项不适合用作自我激励型探索性学习的任务,因为它们会让人挠破头皮,但如果发现其中的乐趣,它们可以和其它方法一样用于编程实践教育。智能手机(Smartphones)应用程序开发行业中最大的新热潮是智能手机的应用程序。这种装置通常需要开发人员使用一种可将装置的功能发挥到极至的特定语言作为应用平台,至少要以官方认可的方式进行。智能手机开发体系的一个新兴产业正在崛起,即允许开发人员用非智能手机平台原生的其它语言编写自己的代码,然后转化为原生语言的应用程序。 因为不需要学习任何特定的智能手机平台的官方应用程序开发语言,Web应用程序也沾了光,成为智能手机应用程序开发的一种方法。选择语言甚于平台的另一个方案是使用像诺基亚的N900这样的设备,它运行Debian发行的Linux系统,可以运行的软件范围很宽——包括很多不是为智能手机设计的软件。侧重于多种方法开发智能手机应用程序的书籍和在线教程纷纷出现,特别是Android和iPhone的设备。一些第三方框架将可以从HTML + JavaScript 到 Ruby 或 Python编写的代码“编译”为多种平台的“本地”应用程序,有时不仅包括智能电话平台,而且包括桌面系统。对这种情况也许最令人兴奋的是,这些框架和相关的IDE不倾向于试图解决所有的编程问题,这与同样出色的编程方式的主要框架,如Visual Studio和.NET框架有所不同。这使得人们有可能通过缩小选项至一个易于管理的问题领域来显著地简化开发过程。其结果是软件开发风格令初学者感到非常易于接受。不足之处是,在学习如何编程时,你可能很难每天都编写新的智能手机应用程序。但是,如果您的智能手机的操作系统是类Unix系统(如N900的),同样的小工具开发项目在工作站和服务器中都非常有用。电子表格如果使用了附带强大宏系统的电子表格程序,你将拥有一个快速的方法来阅读其他人(或物)代码,并编写自己的代码。首先,将你执行次数多、通常需要采取数个繁琐步骤的任务记录成一个宏。接下来,打开宏的源代码,阅读并进行编辑,使之更适合于一般用途。这是一个非常有限的方法,不会带来多大的长进,但可能会帮助你上路,自然地喜欢上简单的脚本代码。使用此类脚本的最常见的电子表格程序可能是微软Excel。Excel所使用的VBA是一种贫乏的语言,但是如果你在日常工作中大量使用Excel,这可能是无论如何你都该掌握的一种技能。OpenOffice.org使用了类似的宏系统,使用方法大致相同,LibreOffice也像微软Office一样,提供了学习代码的机会。在任何情况下,编写程序的门坎都比编写简单的命令行shell脚本代码稍高,因为菜单选项和按钮需要点击才能启用。入门的成本类似于用市场上的一种主要IDE开始一个新项目,但是一个大幅缩水的“项目”。这会是一个不错的主意,可以确保这不仅仅是在日常开发环境中编写脚本的机会,甚至是加以利用就会很有帮助的。Unix如果你定期使用一些类UNIX系统,在寻找锻炼初期编程技能的方式时就具有巨大的优势。UNIX在简单脚本自动化方面提供了比任何其他家庭通用操作系统的更多的使用机会,这要感谢平台上管理脚本的极大灵活性。在最不复杂的情况下,一个管理脚本可能只不过是将一系列shell命令保存到一个文件中。在此基础上,可以利用简单的循环和条件结构、输入输出处理、文件读写、计划任务来进行扩展。通过编写简单shell脚本爽过一把后,花一段时间来学习如何用Perl、Python和Ruby编写管理脚本对任何一个Unix系统管理员都是值得的。在Unix环境使用这些语言的关键技能包括通过UNIX管道和重定向访问文本流,处理命令行选项,读写文件,使用正则表达式搜索和操作文本。管理员也想知道编程的公共基础知识,比如处理输出,循环(或在某些情况下递归),以明确界定的标准为基础,通过使用条件判断结构编程来作出决策。编写Unix命令行工具是一块沃土,有许多机会将脚本语言的巨大能力用于编程。由于管理脚本开发的灵活性和简约性要求,编写工具的范围可以从一些有用工具的最简例子到强大的服务器进程,甚至大规模并行任务自动化,负载平衡,启发式过滤,和一些其他有趣的问题解决作业,这些问题激起了世界上最好的程序员的兴趣。虽然几乎所有通用操作系统都具有一些使用管理脚本的能力,其中相当一部分用途比较窄,另一些操作系统则比较均衡。Unix在管理脚本的适用条件方面高人一等,因为诸如主要Linux发行版和BSD Unix系统等Unix类系统共享相同的基本运行环境设计,他们都可以从管理脚本和脚本平台之间的可移植性中受益 – 只要你按可移植性要求来写这些脚本(如通过使用sh或Perl而不是bash,选择系统标准sysctl值而不是数据源的proc文件系统)。这些工作也适用于除开非常高级,动态,解释型语言之外的其它语言。C,C++,Haskell,Objective-C,Objective Caml,以及大量其他选项正好合适各类简单Unix工具的编写任务。对于其中的许多语言,即使要完成像小型管理工具的这样简单的工程项目,也必须学会更广泛的技能,这一要求比Perl,Ruby和Bourne shell的这样的语言高。但这些任务与GUI应用程序开发、系统编程、其它经常使用(特别是在其他平台上的)的任务比起来,其艰巨性对编程初学者来说要小得多。实际上,鉴于Unix哲学多年来提供了大量常用工具,这些工具严格分工(大部分),并工作良好,类UNIX环境对编程新手的价值中有一部分是充分利用Unix命令行环境力量,鼓励用户像程序员那样去思考,而非观众。Web网页这是一个危险的建议,通过玩JavaScript来学习编程。这不是因为JavaScript是一种不好的语言,而是因为追求动态用户体验的缘故,网页已经被不加限制地滥用JavaSciprt弄得乱七八糟,因而在网页上放纵程序员新手可能会被认为是不负责任的。在网页中JavaScript也有一些积极用法,而且可以让新手们对编写在浏览器中运行的桌面应用程序的想法愈来愈感兴趣,这给了我们在程序员职业生涯中尽早开始学习JavaScript的很多理由。事实上,JavaScript是一种最常见的、单独的客户端网页脚本,这也意味着JavaScript可能是最简单的语言,通过阅读别人的代码就能学习。找到具有客户端动态元素的任何网页,然后右键单击并选择查看页面源代码的选项,你就会发现它布满了JavaScript的散落片段。对于更复杂的动态页面,(X)HTML的网页甚至可能引用一个纯代码的单独.js文件。在把代码上传到公共访问的Web服务器前要细心检查;确保它是好的。如果你想让更多的有用脚本以本地方式来启动,浏览器扩展性可以让你将任意脚本应用到你查看的网页上——而且只适用于你个人的浏览体验。Firefox的Greasemonkey是一个例子。

㈩ 怎样才能学好shell编程

shell类似于C语言 基本语法大相径庭 shell的重点在于正则表达式 和运算符 这个比较难记先弄懂基本的运算符 和命令 然后尝试编写shell脚本